테스트없이 Gradle 빌드


635

gradle build단위 테스트 를 실행 하지 않고 실행하고 싶습니다 . 나는 시도했다 :

$ gradle -Dskip.tests build

그것은 아무것도하지 않는 것 같습니다. 사용할 수있는 다른 명령이 있습니까?



Java를 사용하고 있습니까?
나가

2
-DskipTests는 Maven
Gayan Weerakutti가

답변:


1240

-x작업을 제외 하는 명령 줄 인수를 사용해야합니다 .

시험:

gradle build -x test 

최신 정보:

베드로의 의견에 대한 링크가 변경되었습니다. 다음은 Gradle 사용자 안내서다이어그램 입니다


45
이것이 정답입니다. 'gradle assemble'은 다른 많은 작업도 생략합니다. 아이디어를 얻으려면 이 다이어그램 을 참조하십시오 . 일반적인 실제 빌드의 경우 'gradle assemble'은 더 많은 작업을 생략합니다.
피터 Niederwieser

13
@PeterNiederwieser의 링크가 더 이상 유효하지 않습니다. 아마 그는이 다이어그램을 참조했을 것입니다 : gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.

9
-x integTestMaven의 담요만큼 편리하지는 않지만 예를 들어 추가해야 할 수도 있습니다 -DskipTests.
Jesse Glick

1
@ c_maker, 이클립스에서 이것을 수행하는 방법?
rinuthomaz 2016 년

클래스 파일을 실행할 수 있습니까? 와 내 말은, run내 안녕하세요 프로그램의 효과를 볼 수 있습니다. 그러나 나는 그것이 모든 것을 다시 컴파일하고 있다고 생각합니다. Java 프로그램 만 실행하고 싶습니다.
Sigur

107

시험:

gradle assemble

프로젝트에 사용 가능한 모든 작업을 나열하려면 다음을 시도하십시오.

gradle tasks

최신 정보:

처음에는 가장 정답이 아닌 것 같지만 gradle tasks출력 내용이나 문서를 주의해서 읽으십시오 .

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

8
단위 테스트를 디버깅하는 경우 추가 힌트로 gradle assemble주 파일을 컴파일하지 않습니다. 단위 테스트를 수정하는 데 필요한 gradle assemble testClasses경우 빌드 작업 이름 지정이 상당히 혼란 스럽다고 생각합니다.
Martin

36

수락 된 답변이 정답입니다.

OTOH, 내가 이전에 해결 한 방식은 모든 프로젝트에 다음을 추가하는 것이 었습니다.

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

로 빌드를 실행하면 -Dskip.tests=true모든 테스트 작업을 건너 뜁니다.


3
나에게 이것은 -x 테스트가 시작 프로젝트에서만 작동하는 것처럼 보이지만 다중 프로젝트 빌드 (gdle 2.1에서 테스트 됨)의 종속성에서는 작동하지 않기 때문에 이것이 여전히 유일한 작업 옵션입니다. 루트 build.gradle의 configure (subprojects.findAll {javaProjects.contains (it.name)}) {} 블록에 test.onlyif ...를 넣으면 모든 프로젝트에서 작동합니다.
tim10

좋아요 이 방법은 maven 사용자에게 친숙합니다.
AlexR

23

당신은 다음 줄 추가 build.gradle, **/*제외 모든 테스트를.

test {
    exclude '**/*'
}

2
이것은 가장 좋은 답변입니다 IMHO
Marco Sulla 17:32의

1
감사! 당신의 대답은 도움이되었습니다.
JAY PATEL


4

참고

gradle에서 작업을 제외하려면 -x명령 줄 옵션을 사용하십시오. 아래 예를 참조하십시오

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'
}

출력 : gradle -q dist -x runningTest

task compile
compile test
running distribution job

희망이 당신에게 기본을 줄 것입니다


페이지의 스크린 샷을 보내십시오. 이 코드 줄을 넣어 어디에서 .... 잘 모릅니다
호세인 만 소리를

이 코드는 build.gradle에 포함되어야합니다. :)
Suganthan Madhavan Pillai

2

프로젝트에서 테스트 작업을 비활성화하는 다른 방법은 다음과 같습니다.

tasks.withType(Test) {enabled = false}

이 동작은 프로젝트 중 하나 (또는 ​​프로젝트 그룹)에서 테스트를 비활성화하려는 경우에 때때로 필요했습니다.

이 방법은 자바 '테스트'뿐만 아니라 모든 종류의 테스트 작업에 효과적입니다. 또한이 방법은 안전합니다. 내가 말하는 것은 다음과 같습니다. 당신은 다른 언어로 된 일련의 프로젝트를 가지고 있습니다 : 우리가 main에 이런 종류의 레코드를 추가하려고한다면 build.gradle:

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

테스트 라는 작업이 없으면 프로젝트에서 실패 합니다


2

-x test테스트 실행 건너 뛰기를 사용 하지만 테스트 코드 컴파일도 제외합니다.

gradle build -x test 

이 경우 하나의 목표는 컴파일이고 다음 목표는 테스트 (빌드-> 테스트) 인 CI / CD 프로세스가 있습니다.

따라서 첫 번째 Build목표를 위해 전체 프로젝트가 제대로 컴파일되도록하고자했습니다. 이를 위해 우리는 다음을 사용했습니다.

./gradlew build testClasses -x test

다음 목표에서 우리는 단순히 테스트를 실행합니다.


0
gradle build -x test --parallel

머신에 여러 코어가있는 경우 그러나 병렬 청소를 사용하지 않는 것이 좋습니다.


0

이것을 시도하십시오 :

gradlew -DskipTests=true build


6
@KirankumarDafda-아니요. 기존 답변이 수락 된 경우에도 원할 때마다 답변을 게시 할 수 있습니다. 새 답변이 수락 된 답변보다 낫거나 다른 방법으로 해결하거나 다른 사람을 도울 수 있습니다. 검토에서 .
Wai Ha Lee

@WaiHaLee 내 의견을 편집 할 수는 없지만 새로운 사용자를위한 제안을 받았으므로 다른 설명을 추가하여 다른 사용자가이 답변 또는 코드가 도움이되는 이유를 확인할 수 있도록 설명을 추가하려고합니다.
키란 쿠마르 다 프다

0

에서 자바 플러그인 :

$ 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.

테스트없이 Gradle 빌드에는 두 가지 옵션이 있습니다.

$ gradle assemble
$ gradle build -x test

그러나 컴파일 테스트를 원한다면 :

$ gradle assemble testClasses
$ gradle testClasses
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.