Xây dựng lớp mà không cần kiểm tra


636

Tôi muốn thực hiện gradle buildmà không thực hiện các bài kiểm tra đơn vị. Tôi đã thử:

$ gradle -Dskip.tests build

Điều đó dường như không làm gì cả. Có một số lệnh khác tôi có thể sử dụng?


1
Có lẽ điều này giúp bạn Gradle Buil mà không cần kiểm tra
kẻ lừa đảo

Bạn đang sử dụng Java ??
Naga

2
-DskipTestsdành cho Maven
Gayan Weerakutti

Câu trả lời:


1242

Bạn nên sử dụng -xđối số dòng lệnh loại trừ bất kỳ tác vụ nào.

Thử:

gradle build -x test 

Cập nhật:

Liên kết trong nhận xét của Peter đã thay đổi. Dưới đây là sơ đồ từ hướng dẫn của người dùng Gradle


45
Đây là câu trả lời chính xác. 'lắp ráp lớp' cũng sẽ bỏ qua nhiều nhiệm vụ khác. Xem sơ đồ này để có được một ý tưởng. Đối với các bản dựng thực tế điển hình, 'lắp ráp lớp' sẽ bỏ qua nhiều nhiệm vụ hơn nữa.
Peter Niederwieser

13
Liên kết từ @PeterNiederwieser không còn hợp lệ. Có lẽ anh ta đang đề cập đến sơ đồ này: gradle.org/docs/civerse/userguide/img/javaPluginT task.png
Dave L.

9
Hoạt động mặc dù bạn có thể cần thêm ví dụ -x integTest, v.v., vì vậy không tiện lợi như chăn của Maven -DskipTests.
Jesse Glick

1
@c_maker, Làm thế nào để thực hiện điều này từ nhật thực?
rinuthomaz

Có thể thực hiện các tập tin lớp? Ý tôi là, với runtôi có thể thấy hiệu quả của chương trình Hello của tôi. Nhưng tôi nghĩ rằng nó đang biên dịch lại mọi thứ. Tôi chỉ muốn thực hiện chương trình java.
Sigur

107

Thử:

gradle assemble

Để liệt kê tất cả các nhiệm vụ có sẵn cho dự án của bạn, hãy thử:

gradle tasks

CẬP NHẬT:

Điều này có vẻ không phải là câu trả lời đúng nhất lúc đầu, nhưng hãy đọc kỹ gradle taskstài liệu hoặc đầu ra.

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

8
Là một gợi ý bổ sung trong trường hợp bạn đang gỡ lỗi các bài kiểm tra đơn vị của mình: gradle assemblesẽ không biên dịch các tệp chính. Nếu bạn làm việc trong việc kiểm tra đơn vị của bạn cố định thì bạn cần gradle assemble testClasses- Tôi nghĩ rằng việc đặt tên nhiệm vụ xây dựng khá khó hiểu.
Martin

36

Câu trả lời được chấp nhận là câu trả lời đúng.

OTOH, cách tôi đã giải quyết trước đây là thêm các mục sau vào tất cả các dự án:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

Chạy bản dựng với -Dskip.tests=truevà tất cả các tác vụ kiểm tra sẽ bị bỏ qua.


3
Đối với tôi đây vẫn là lựa chọn làm việc duy nhất vì thử nghiệm -x dường như chỉ hoạt động trên dự án bắt đầu nhưng không phụ thuộc vào xây dựng nhiều dự án (thử nghiệm trên lớp 2.1). Đặt khối test.onlyif ... trong một cấu hình (subprojects.find ALL {javaProjects.contains (it.name)}) {} trong bản dựng build.gradle gốc của bạn và nó sẽ hoạt động cho tất cả các dự án.
timm

Tốt một. Cách này quen thuộc với người dùng maven.
AlexR

23

Bạn có thể thêm các dòng sau vào build.gradle, **/*loại trừ tất cả các bài kiểm tra.

test {
    exclude '**/*'
}

2
Đây là câu trả lời hay nhất IMHO
Marco Sulla

1
Cảm ơn! câu trả lời của bạn rất hữu ích
JAY PEL


4

Tài liệu tham khảo

Để loại trừ bất kỳ tác vụ nào từ lớp, hãy sử dụng -xtùy chọn dòng lệnh. Xem ví dụ dưới đây

task compile << {
    println 'task compile'
}

task compileTest(dependsOn: compile) << {
    println 'compile test'
}

task runningTest(dependsOn: compileTest) << {
    println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
    println 'running distribution job'
}

Đầu ra của: gradle -q dist -x runningTest

task compile
compile test
running distribution job

Hy vọng điều này sẽ cung cấp cho bạn cơ bản


xin vui lòng gửi một ảnh chụp màn hình của trang. tôi không biết nên đặt dòng mã này ở đâu ....
Hossein Mansouri

Đoạn mã này sẽ có trong bản dựng của bạn.gradle :)
Suganthan Madhavan Pillai

2

cách khác nhau để vô hiệu hóa các tác vụ thử nghiệm trong dự án là:

tasks.withType(Test) {enabled = false}

hành vi này đôi khi cần thiết nếu bạn muốn vô hiệu hóa các thử nghiệm trong một dự án (hoặc nhóm dự án).

Cách này hoạt động cho tất cả các loại nhiệm vụ kiểm tra, không chỉ là java 'kiểm tra'. Ngoài ra, cách này là an toàn. Ý tôi là, hãy nói: bạn có một tập hợp các dự án bằng các ngôn ngữ khác nhau: nếu chúng tôi cố gắng thêm loại bản ghi này vào chính build.gradle:

 subprojects{
 .......
 tests.enabled=false
 .......
}

chúng ta sẽ thất bại trong một dự án khi chúng ta không có nhiệm vụ gọi là kiểm tra


2

Sử dụng -x testbỏ qua thực hiện kiểm tra nhưng điều này cũng loại trừ biên dịch mã kiểm tra.

gradle build -x test 

Trong trường hợp của chúng tôi, chúng tôi có quy trình CI / CD trong đó một mục tiêu là biên dịch và mục tiêu tiếp theo là thử nghiệm (Xây dựng -> Kiểm tra).

Vì vậy, vì Buildmục tiêu đầu tiên của chúng tôi, chúng tôi muốn đảm bảo rằng toàn bộ dự án được biên dịch tốt. Đối với điều này, chúng tôi đã sử dụng:

./gradlew build testClasses -x test

Về mục tiêu tiếp theo, chúng tôi chỉ cần thực hiện các bài kiểm tra.


0
gradle build -x test --parallel

Nếu máy của bạn có nhiều lõi. Tuy nhiên, không nên sử dụng song song sạch.


0

Vui lòng thử điều này:

gradlew -DskipTests=true build


6
@KirankumarDafda - không. Bạn có thể đăng câu trả lời bất cứ khi nào bạn muốn, ngay cả khi câu trả lời hiện có đã được chấp nhận. Câu trả lời mới có thể tốt hơn câu trả lời được chấp nhận hoặc giải quyết nó theo một cách khác hoặc giúp đỡ người khác. Từ đánh giá .
Wai Ha Lee

@WaiHaLee Tôi không thể chỉnh sửa nhận xét của mình, nhưng khi tôi nhận được đề xuất cho người dùng mới, tôi muốn giải thích rằng hãy thử thêm câu trả lời với nhiều thông tin rõ ràng hơn để người dùng khác có thể kiểm tra xem tại sao câu trả lời hoặc mã này hữu ích cho họ.
Kirankumar Dafda

0

Trong Plugin Java :

$ gradle tasks

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
testClasses - Assembles test classes.

Verification tasks
------------------
test - Runs the unit tests.

Xây dựng lớp mà không cần kiểm tra, bạn có hai tùy chọn:

$ gradle assemble
$ gradle build -x test

nhưng nếu bạn muốn kiểm tra biên dịch:

$ gradle assemble testClasses
$ gradle testClasses
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.