2009-10-20 31 views
10

Tôi hiện đang làm việc trên một dự án sử dụng JUnit4 rộng rãi trong tất cả các mô-đun. Chúng tôi đang sử dụng Maven2 để xây dựng dự án và Hudson để tích hợp liên tục. Dự án được xây dựng và chạy dưới Java 1.5.Có thể bỏ qua các bài kiểm tra đơn vị nhất định không?

Gần đây, chúng tôi đã thêm một lượng lớn các bài kiểm tra đơn vị cần thiết, nhưng không muốn chạy trong quá trình xây dựng (nhưng các bài kiểm tra đơn vị khác trong cùng một dự án).

Tôi muốn biết nếu có một số loại chú thích có thể được áp dụng cho các bài kiểm tra hoặc một số cấu hình có thể được thực hiện cho Maven sẽ bỏ qua các bài kiểm tra đơn vị sống trong một gói nhất định hoặc trong một lớp thử nghiệm nhất định thời gian?

Có thể thay thế chỉ việc đặt các thử nghiệm cụ thể này vào một lớp bình thường sẽ chạy qua chính, nhưng điều đó không lý tưởng.

Cám ơn góp ý của bạn

Trả lời

15

Bạn có thể định cấu hình maven-surefire-plugin.

Ví dụ:

<project> 
<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
     <excludes> 
     <exclude>**/TestCircle.java</exclude> 
     <exclude>**/TestSquare.java</exclude> 
     </excludes> 
    </configuration> 
    </plugin> 
</plugins> 

EDIT:
Một giải pháp khác là xác định profiles trong đó tất cả thử nghiệm sẽ được chạy ví dụ bởi hudson. Trong chế độ phát triển, bạn có thể sử dụng tập hợp con của tất cả các bài kiểm tra để tăng tốc độ phát triển (hoặc tất cả các bài kiểm tra có thể trong cấu hình mặc định, kiểm tra được chọn trong cấu hình dev - vì vậy bạn cần chạy maven với thuộc tính -PprofileName). Ví dụ này phù hợp hơn cho các bài kiểm tra tích hợp để có trình đăng nhập để chạy.

+0

+1 cho tiểu sử (về các bài kiểm tra tích hợp, tôi muốn đặt chúng trong 'src/test/it' và chạy chúng trong giai đoạn' tích hợp kiểm tra') –

+0

Tuyệt vời, cảm ơn vì điều này tôi sẽ xem xét cả hai giải pháp và quyết định phù hợp nhất. –

+0

@James. Lưu ý rằng giải pháp với cấu hình cũng cần cấu hình plugin chắc chắn. @Pascal. Có, bạn đúng, tôi cũng làm như bạn. Nhưng đôi khi viết một thử nghiệm đơn vị * tinh khiết * rất khó, và luôn luôn là một cám dỗ để thử nghiệm nhiều hơn một chút và vẫn gọi nó là * kiểm tra đơn vị * :) – cetnar

3

Tôi chưa bao giờ thử nó, nhưng bạn có thể đặt các xét nghiệm bổ sung trong một thư mục nguồn khác nhau, và cấu hình xây dựng kịch bản của bạn để bao gồm hoặc loại trừ nó theo xây dựng mục tiêu của bạn?

+0

Thú vị, không phải là một ý tưởng tồi. Nếu không có gì khác đi lên, tôi sẽ xem xét nó. Chúc mừng –

1

JUnit 4,7 Tôi tin hỗ trợ "Quy tắc" cho loại điều (pre 4.7 Tôi nghĩ rằng bạn có thể có Runners tùy chỉnh sử dụng người sẽ kiểm tra một biến môi trường).

Hoặc bạn có thể xem các thẻ bao gồm/loại trừ các thẻ của hệ thống xây dựng của mình.

4

Giả Hãy thử JUnit, mà dường như là từ 4,4

Giả sử bạn có thể phát hiện trong thời gian chạy nếu kiểm tra nên được chạy (thông qua định nghĩa, tài sản, vv), điều này sẽ cho phép bạn giữ một bộ kiểm tra sạch đẹp.

8

Có chú thích "Bỏ qua", nhưng đó là công việc thủ công để thêm chúng, không chắc liệu điều đó có hữu ích hay không.
Nó có thể được sử dụng cho một phương pháp thử nghiệm hoặc một lớp học toàn

@Ignore("not ready yet") @Test public void testSomething() {... 

hoặc

@Ignore public class SomeTest { 
    @Test public void testSomething() {... 
} 

[]]

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