[testing] Gradle에서 하나의 로컬 테스트 클래스 만 실행하는 방법

나는 Gradle을 처음 사용합니다. Gradle 1.10과 Ubuntu 13을 사용합니다.

SBT의 ‘testonly’와 비슷한 로컬 테스트 클래스를 하나만 실행하는 명령이 있는지 알고 싶습니다 .



답변

단일 테스트 클래스를 실행하려면 Airborn의 답변이 좋습니다.

here 에서 찾은 몇 가지 명령 줄 옵션을 사용하면 이와 같이 간단하게 수행 할 수 있습니다.

gradle test --tests org.gradle.SomeTest.someSpecificFeature
gradle test --tests *SomeTest.someSpecificFeature
gradle test --tests *SomeSpecificTest
gradle test --tests all.in.specific.package*
gradle test --tests *IntegTest
gradle test --tests *IntegTest*ui*
gradle test --tests *IntegTest.singleMethod
gradle someTestTask --tests *UiTest someOtherTestTask --tests *WebTest*ui

gradle 버전 1.10부터 테스트 필터를 사용하여 테스트 선택을 지원합니다 . 예를 들어

apply plugin: 'java'

test {
  filter {
    //specific test method
      includeTestsMatching "org.gradle.SomeTest.someSpecificFeature"

     //specific test method, use wildcard for packages
     includeTestsMatching "*SomeTest.someSpecificFeature"

     //specific test class
     includeTestsMatching "org.gradle.SomeTest"

     //specific test class, wildcard for packages
     includeTestsMatching "*.SomeTest"

     //all classes in package, recursively
     includeTestsMatching "com.gradle.tooling.*"

     //all integration tests, by naming convention
      includeTestsMatching "*IntegTest"

     //only ui tests from integration tests, by some naming convention
     includeTestsMatching "*IntegTest*ui"
   }
}

멀티 맛 환경 (안드로이드에 대한 일반적인 사용 사례)의 경우, 이 답변을 확인 는 AS, --tests인수가 지원되지 않는 것입니다 및 오류가 발생합니다.


답변

이 링크 섹션 23.12 에서 테스트 위한 필터링 클래스의 예를 더 찾을 수있는 gradle -Dtest.single=ClassUnderTestTest test것처럼 단일 클래스를 테스트하거나 regexp를 사용하려는 경우 수행 gradle -Dtest.single=ClassName*Test test할 수 있습니다 . 테스트.


답변

다중 모듈 프로젝트가있는 경우 :

모듈 구조가

root-module
 -> a-module
 -> b-module

실행하려는 테스트 (testToRun)는 b- 모듈에 있으며 전체 경로는 com.xyz.b.module.TestClass.testToRun입니다.

여기에서 b- 모듈에서 테스트를 실행하고 싶으므로 b- 모듈에 사용할 수있는 작업이 표시됩니다.

./gradlew :b-module:tasks

위의 명령은 b 모듈의 모든 작업을 설명과 함께 나열합니다. 이상적인 경우 에는 해당 모듈에서 단위 테스트 를 실행하는 test 라는 작업이 있습니다 .

./gradlew :b-module:test

이제 b- 모듈에서 모든 테스트를 실행하는 시점에 도달했습니다. 마지막으로 특정 경로 패턴과 일치하는 테스트를 실행하기 위해 위 작업에 매개 변수를 전달할 수 있습니다.

./gradlew :b-module:test --tests "com.xyz.b.module.TestClass.testToRun"

지금, 당신이 실행하면이 대신

./gradlew test --tests "com.xyz.b.module.TestClass.testToRun"

모듈 a와 b 모두에 대해 테스트 작업을 실행하는데, a- 모듈에 위의 패턴과 일치하는 것이 없기 때문에 실패 할 수 있습니다.


답변

많은 것을 알아 낸 후에 다음이 나를 위해 일했습니다.

gradle test --tests "a.b.c.MyTestFile.mySingleTest"


답변

참고하시기 바랍니다 --tests당신이 다른 빌드가있는 경우 옵션이 작동하지 않을 수 있습니다 types/flavors(실패를 Unknown command-line option '--tests'). 이 경우 특정 테스트 작업을 지정해야합니다 (예 : testProdReleaseUnitTestjust 대신 test)


답변

다음은 gradlew명령 행 옵션을 사용하여 단일 테스트 클래스를 실행하는 명령입니다.

gradlew.bat Connected**your bundleVariant**AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass

com.example.TestClass변형으로 클래스를 실행하는 아래 예제 Variant_1:

gradlew.bat ConnectedVariant_1AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass


답변

끝에 별표 (*)를 추가해야합니다.

gradle test –tests “com.abc *”