Làm cho Maven chạy tất cả các bài kiểm tra, ngay cả khi một số thất bại


243

Tôi có một dự án với một số mô-đun. Khi tất cả các bài kiểm tra vượt qua, kiểm tra Maven chạy tất cả.

Khi các thử nghiệm thất bại trong mô-đun đầu tiên, maven sẽ không tiếp tục dự án tiếp theo. Tôi đã đặt testFailureIgnore thành true trong cài đặt Surefire, nhưng nó không có ích.

Làm thế nào để tôi làm cho maven chạy tất cả các bài kiểm tra?


Phiên bản nào của maven-Surefire-plugin?
Pascal Thivent

Câu trả lời:


359

Từ tài liệu Maven Embedder :

-fae, --fail-at-end Chỉ thất bại trong việc xây dựng sau đó; cho phép tất cả các bản dựng không bị ảnh hưởng tiếp tục

-fn, --fail-never KHÔNG BAO GIỜ thất bại trong quá trình xây dựng, bất kể kết quả dự án là gì

Vì vậy, nếu bạn đang thử nghiệm một mô-đun hơn bạn an toàn sử dụng -fae.

Mặt khác, nếu bạn có nhiều mô-đun và nếu bạn muốn tất cả chúng được thử nghiệm (ngay cả những mô-đun phụ thuộc vào mô-đun thử nghiệm thất bại), bạn nên chạy mvn clean install -fn.
-faesẽ tiếp tục với mô-đun có thử nghiệm thất bại (sẽ chạy tất cả các thử nghiệm khác), nhưng tất cả các mô-đun phụ thuộc vào mô-đun sẽ bị bỏ qua.


1
ngoài ra, bạn có thể thêm -e cho cmd để cung cấp một số thông tin lỗi.
despot

11
Tôi chỉ thử nghiệm tùy chọn --fail-never. Maven sẽ không thất bại trong quá trình xây dựng ngay cả khi có lỗi biên dịch. Nếu tôi sử dụng tùy chọn này trên Jenkins, bản dựng có vẻ thành công ngay cả khi nó có nhiều lỗi biên dịch. Tôi thích -Dmaven.test.failure.ignore=truetrong trường hợp này và để Jenkins phân tích các báo cáo chắc chắn.
fuemf5

@wlnirvana Tôi đã chỉnh sửa bài đăng ngay bây giờ bằng liên kết này (vì vậy hãy xóa bình luận của bạn ...)
Steve Chambers

93

Tôi vừa tìm thấy tham số "-fae", khiến Maven chạy tất cả các bài kiểm tra và không dừng lại khi thất bại.


3
Đáng buồn thay, tham số này không hoạt động khi tôi chuyển nó cho TeamCity.
ripper234

4
Trong một dự án đa mô-đun, các mô-đun phụ thuộc vào mô-đun đã thử nghiệm thất bại sẽ bị bỏ qua. Sử dụng -fn thay thế.
hipokito

2
@ ripper234 bạn đã tìm được cách để nó hoạt động trên TeamCity chưa?
Jeredriq Demas

86

Bạn có thể kiểm tra với Surefire 2.6 và cấu hình Surefire với testFailureIgnore=true. Hoặc trên dòng lệnh:

mvn install -Dmaven.test.failure.ignore=true

16
IIRC điều này có tác dụng cho toàn bộ bản dựng không bị lỗi, thay vì chạy tất cả các bài kiểm tra và cuối cùng không thành công.
Ondra ižka

1
Đây là tùy chọn duy nhất phù hợp với tôi ... Tùy chọn "-fae" không làm gì đối với các lỗi thử nghiệm
Yoi

38

Hãy thử thêm cấu hình sau đây cho plugin Surefire trong dự án gốc của bạn :

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

17

Câu trả lời nhanh:

mvn -fn test

Làm việc với các dự án xây dựng lồng nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.