Gói Maven / cài đặt mà không cần kiểm tra (bỏ qua kiểm tra)


342

Tôi đang cố gắng để gói dự án của tôi. Nhưng, nó tự động chạy các thử nghiệm trước đó để thực hiện việc đóng gói. Các bài kiểm tra chèn một số nội dung trong cơ sở dữ liệu. Đây không phải là điều tôi muốn, tôi cần tránh chạy thử trong khi đóng gói ứng dụng. Bất cứ ai cũng biết làm thế nào để chạy gói với kiểm tra ra?


13
Một bài kiểm tra đơn vị nên bao gồm 4 giai đoạn sau: Khởi tạo, Kiểm tra, Xác minh và Xé. Có lẽ bạn nên điều chỉnh các bài kiểm tra của mình và thêm một lần xé / dọn dẹp cơ sở dữ liệu của bạn hoặc bạn nên sử dụng một thể hiện cơ sở dữ liệu riêng biệt, không được đóng gói với tệp jar của bạn, để chạy thử nghiệm của bạn.
Marc-Christian Schulze

Có vẻ như các bài kiểm tra của bạn "nặng" nên bạn không muốn thực hiện chúng. Nhưng đó là một thực tế xấu. Có lẽ một số khung như DBUnit có thể giúp bạn? Hoặc bạn có thể hoàn nguyên các thay đổi cơ sở dữ liệu vào cuối bài kiểm tra?
Mickael Marrache

Câu trả lời:


572

Chạy maven với

mvn package -Dmaven.test.skip=true 

1
cảm ơn vì đã trả lời ngay lập tức, tôi đang chạy từ nhật thực, nơi tôi thêm lệnh -Dmaven.test.skip = true?
vks

10
Tôi chưa bao giờ khởi chạy mvn từ nhật thực, nhưng trong cửa sổ Cấu hình Run nơi bạn định cấu hình các mục tiêu và cấu hình của maven, có một hộp kiểm 'Bỏ qua kiểm tra'. Có lẽ điều đó sẽ làm nên mánh khóe.
Giorgos Dimtsas

9
theo tài liệu sẽ bỏ qua việc biên dịch cũng như thực thi. Bạn có thể sử dụng -DskipTests để bỏ qua việc thực thi. Bài đăng này cũng đưa ra một số cảnh báo về những phiên bản bạn có thể sử dụng mỗi cờ với
JonnyRaa

1
Cảm ơn rất nhiều, tôi đã từng sử dụng nó -DskipTestsnhưng nó không còn hoạt động nữa, có biết tại sao không?
sam

7
Lưu ý rằng tài liệu Maven Surefire PluginMaven Failsafe cho thấy cài đặt skipTestsđược ưu tiên cài đặt maven.test.skip.
Filip Bártek

171

Chỉ cần cung cấp lệnh được đề cập dưới đây sẽ bỏ qua việc thực hiện các trường hợp thử nghiệm,

mvn package -DskipTests

4
Đối với tôi điều này sẽ không làm việc. Tôi đã phải sử dụng giải pháp được chấp nhận thay thế
Sebas

1
-DskipTestsđã không làm việc cho tôi khi tôi sử dụngmvn clean install -DskipTests
Vishrant

1
Nó ổn một phần vì nó sẽ không thực hiện kiểm tra NHƯNG nó sẽ hoàn thành các lớp kiểm tra .....
Antoniossss

Đối với người theo dõi, -DskipTestscũng giống như -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 và vâng, nó sẽ biên dịch các bài kiểm tra và không chạy chúng (trong khi -Dmaven.test.skip=truekhông biên dịch chúng)
rogerdpack

47

bạn có thể thêm cấu hình plugin này vào pom của mình nếu bạn không muốn đặt dòng lệnh arg:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
Bạn không còn có thể chạy các bài kiểm tra từ dòng lệnh với cấu hình này.
Emmanuel Bourg

1
@EmmanuelBourg Điều đó có thể được khắc phục bằng cách làm theo các hướng dẫn trong ví dụ này maven.apache.org/plugins/maven-surefire-plugin/examples/ trộm
smp7d


41

Lưu ý rằng -Dmaven.test.skip ngăn Maven xây dựng tạo phẩm thử nghiệm.

Nếu bạn muốn bỏ qua các bài kiểm tra nhưng tạo các tạo phẩm theo cách sử dụng bản dựng thông thường:

-Dmaven.test.skip.exec

1
Đây là asnwer tôi đang tìm kiếm, hoạt động tốt. Cảm ơn.
Binita Bharati

Làm thế quái nào tôi phải nhớ điều đó? Tại sao không tạo một bí danh rõ ràng và dễ nhớ đơn giản như "SkipTests"?
TheRealChx101

32

Nếu bạn đang thử điều này trong Windows Powershell, bạn sẽ gặp lỗi này:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

Lý do cho điều này là, trong Powershell, " -" có ý nghĩa đặc biệt và nó đang gây ra vấn đề với maven.

Giải pháp là trả trước bằng backtick (`), như vậy ..

mvn `-Dmaven.test.skip=true install 

Tham khảo: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/


1
Tôi đã có cùng một vấn đề và điều này đã giải quyết nó cho tôi. Cám ơn.
nsof

26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

cũng là một cách để thêm vào tập tin pom


18

Bạn có thể truyền maven.test.skipcờ dưới dạng đối số JVM, để bỏ qua các kiểm tra đang chạy khi giai đoạn gói (và các giai đoạn trước trong vòng đời mặc định) được chạy:

mvn package -Dmaven.test.skip=true

Bạn cũng có thể chuyển skipTestscờ một mình để thực thi mvn. Nếu bạn muốn đưa thông tin này vào POM của mình, bạn có thể tạo một hồ sơ mới nơi bạn có thể định cấu hình maven-surefire-pluginđể bỏ qua các bài kiểm tra .


17

Bạn chỉ phải cung cấp

-Dmaven.test.skip

Bạn không còn cần phải nối thêm =true.


13

Trong Inllij IDEA cũng có một tùy chọn để bỏ qua mục tiêu thử nghiệm.

nhập mô tả hình ảnh ở đây


11

Trả lời một câu hỏi cũ và được chấp nhận ở đây. Bạn có thể thêm phần này vào tệp pom.xml của mình nếu bạn muốn tránh truyền đối số dòng lệnh mọi lúc:

  <properties>
    <skipTests>true</skipTests>
  </properties>

10

Bạn có thể thêm một -DskipTestshoặc -Dmaven.test.skip=truebất kỳ mvnlệnh nào để bỏ qua các bài kiểm tra. Trong trường hợp của bạn, nó sẽ như dưới đây:

mvn package -DskipTests

HOẶC LÀ

mvn package -Dmaven.test.skip=true

4

Các thử nghiệm phải luôn luôn chạy [1] trước khi gói. Nếu bạn cần tắt các bài kiểm tra, bạn đang làm sai điều gì đó. Nói cách khác, bạn đang cố gắng giải quyết vấn đề sai. Chỉ ra vấn đề của bạn thực sự là gì, và đặt câu hỏi đó. Có vẻ như nó liên quan đến cơ sở dữ liệu.

[1] Bạn có thể bỏ qua các bài kiểm tra khi bạn cần nhanh chóng tạo ra một tạo phẩm cho địa phương, sử dụng phát triển, nhưng nói chung, việc tạo ra một tạo phẩm phải luôn tuân theo một lần chạy thử thành công.


Tôi có một vấn đề tương tự: các ứng dụng của tôi có chứa websocket. Khi tôi chạy mvn sạch cài đặt, tôi kết thúc trong một loạt thử nghiệm vô tận. Trước khi tôi buộc đóng, quá trình đã diễn ra trong 3 giờ và các tin nhắn được in chỉ là về Websocket. Bạn có thể vui lòng kiểm tra vấn đề của tôi để xem những gì tôi đang làm sai? stackoverflow.com/questions/54614739/
hy

Các quy tắc luôn có ngoại lệ. Nếu bạn không nghĩ vậy, bạn đã sai.
Jay Sullivan


3

Một ký hiệu tốc ký để thực hiện xây dựng maven và bỏ qua các bài kiểm tra sẽ là:

mvn cài đặt sạch -DskipTests


2

Đối với gói maven mà không lây nhiễm thử nghiệm maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

Cảm ơn, tôi cần chính xác điều này ngày hôm nay.
Sean McMillan

1

Bạn rõ ràng là đang làm sai cách. Kiểm tra là một phần quan trọng của bao bì trước. Bạn không nên bỏ qua hoặc bỏ qua nó, mà nên làm điều đó đúng cách. Hãy thử thay đổi cơ sở dữ liệu mà nó chèn dữ liệu (như test_db). Nó có thể mất một lúc để thiết lập nó. Và để đảm bảo cơ sở dữ liệu này có thể được sử dụng mãi mãi, bạn nên xóa tất cả dữ liệu vào cuối các bài kiểm tra. JUnit4 có các chú thích giúp bạn dễ dàng. Sử dụng @B Before, @After @Test chú thích cho các phương thức phù hợp. Bạn cần phải dành thời gian cho nó, nhưng nó sẽ có giá trị!


9
Tôi nghĩ rằng câu hỏi cũng như mong muốn đóng gói mà không chạy thử nghiệm là hoàn toàn hợp lệ. Tôi không nghĩ OP "rõ ràng là làm sai cách". Những người và dự án khác nhau có những nhu cầu khác nhau và những điều này thường không phù hợp với kinh thánh Maven hoặc niềm tin của nhiều người khác nhau (như chính bạn) về cách phát triển phần mềm nên hoạt động. Tôi nghĩ rằng câu trả lời của bạn sẽ được đánh giá cao hơn mà không có cách tiếp cận hạ thấp của nó.
Zero3

1

Trong Intellij, đi đến Xem -> Công cụ Windows -> chọn Dự án Maven. Trên menu thả xuống Lifecyle, nhấp chuột phải vào gói -> chọn Tạo 'your-project [gói]' ...

Nhập giá trị này: package -Dmaven.test.skip=true -f pom.xmltrong trường Dòng lệnh. Nhấp vào Áp dụng và trình đơn thả xuống Chạy Cấu hình sẽ xuất hiện cùng với lệnh maven tùy chỉnh đã tạo của bạn.


Tại sao điều này bị hạ thấp? Tôi sử dụng điều này mọi lúc tôi muốn xây dựng dự án của mình nhưng bỏ qua các bài kiểm tra
Patrick Tolentino

0

mvn clean install -Dmaven.test.skip=true

làm việc cho tôi vì -Dskipđã không làm việc nữa.



-1

Cách tốt nhất và dễ nhất để làm điều đó, trong IntelliJ Idea trong cửa sổ Cấm Maven Project, và chỉ cần không nhấp vào nút kiểm tra. Tôi hy vọng, tôi đã giúp bạn. Chúc bạn ngày mới tốt lành :)


1
Nếu bạn nhấp vào gói, nó sẽ chạy các bài kiểm tra, đó là điều OP đang cố tránh
Charlie
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.