2010-05-25 27 views
9

Có thể nhanh chóng chạy kiểm tra tích hợp đơn/tất cả trong một lớp nhanh chóng trong Grails hay không. Các ứng dụng thử nghiệm đi kèm với hành lý nặng của thanh toán bù trừ của tất cả các tập tin biên dịch và tạo ra các báo cáo cobertura do đó ngay cả khi chúng tôi chạy thử nghiệm tích hợp duy nhất, toàn bộ cơ sở mã được biên dịch, instrumented và báo cáo cobertura là nhận được tạo ra. Đối với ứng dụng của chúng tôi, việc này mất hơn 2 phút.Chạy thử nghiệm tích hợp đơn một cách nhanh chóng trong Grails

Nếu có thể nhanh chóng chạy một thử nghiệm tích hợp và nhận feedbck nhanh, nó sẽ vô cùng hữu ích.

Ngoài ra, điều quan trọng là làm sạch tất cả các tệp được biên dịch sau khi thử nghiệm hoàn tất? Việc dọn dẹp này là tốt nếu chúng ta chạy toàn bộ bài kiểm tra tích hợp, nhưng nếu chúng ta chạy một hoặc hai bài kiểm tra trong một lớp, việc dọn dẹp và biên dịch lại có vẻ là một nút cổ chai lớn cho phản hồi nhanh hơn cho các nhà phát triển.

Cảm ơn

Trả lời

5

Đây là ý định của thử nghiệm tích hợp để làm toàn bộ biên dịch này, tạo cơ sở dữ liệu, máy chủ bắt đầu, vv bởi vì các bài kiểm tra nên chạy trong một môi trường tích hợp, như tên của nó.

Có thể bạn có thể trích xuất một số thử nghiệm để kiểm tra đơn vị. Các bạn có thể chạy trong Eclipse.

Bạn có thể tắt Cobertura bằng cách đặt đoạn mã sau vào grails-app của bạn/conf/BuildConfig.groovy:

coverage { 
    enabledByDefault = false 
} 
+0

Infactura infact có vấn đề. Chúng tôi đã sử dụng plugin cobertura và plugin đã dọn sạch tất cả các nguồn được biên dịch sau khi báo cáo được tạo, điều này ngăn cản chúng tôi khai thác tất cả lợi ích liên quan đến việc biên dịch gia tăng. Hơn nữa, chạy một hoặc hai kiểm tra không yêu cầu báo cáo cobertura toàn diện cho chúng tôi và kiểm tra tích hợp chạy nhanh khi chúng tôi vô hiệu hóa nó. Cảm ơn con trỏ. – Prakash

15

Nếu bạn có một lớp thử nghiệm hội nhập

class SimpleControllerTests extends GrailsUnitTestCase { 
    public void testLogin() {} 
    public void testLogin2() {} 
    public void testLogin3() {} 
} 

Bạn có thể chạy chỉ một bài kiểm tra trong lớp học này bằng cách sử dụng:

grails test-app integration: SimpleController.testLogin 

Tuy nhiên, bạn vẫn sẽ phải chịu hình phạt của tôi cần thiết để thử nghiệm tích hợp (tải cấu hình, kết nối với DB, tạo hạt đậu mùa xuân, v.v.)

Nếu bạn muốn thử nghiệm chạy nhanh, hãy thử viết các bài kiểm tra đơn vị hơn là kiểm tra tích hợp.

+0

Ví dụ chạy thử nghiệm một hoạt động cho, chỉ cần đường dẫn đầy đủ đến lớp mặc dù –

0

Giống như bạn đã nói, phần lớn thời gian là thiết lập môi trường ứng dụng, tiêm đậu và thực hiện chú thích lớp động. Bạn có thể tăng tốc độ chu trình kiểm tra tích hợp của bạn bằng cách chỉ tải điều này một lần, bằng cách chạy thử nghiệm của bạn trong REPL của grails.

Tuy nhiên, sự cân bằng là có các vấn đề tải lại động trong REPL. Nếu bạn thấy sự kỳ quặc ngẫu nhiên, hãy thoát khỏi REPL và tải lại.

$> ./grailsw --plain-output 
|Loading Grails 2.5.3 
|Configuring classpath 
|Enter a script name to run. Use TAB for completion: 
grails> test-app -integration 
... (loads some things) 
... 
grails> test-app -integration 
... (faster loading) 

Và để trả lời cho người nhận xét khác - kiểm tra tích hợp cũng hữu ích, có một số mã không thể kiểm tra bằng thử nghiệm đơn vị (ví dụ, kiểm tra HQL hoặc truy vấn SQL).

Các vấn đề liên quan