나는 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'
). 이 경우 특정 테스트 작업을 지정해야합니다 (예 : testProdReleaseUnitTest
just 대신 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 *”