我正在尝试使用gradle的-Dtest.single
标志运行单个集成测试。我添加了另一个源集src/integrationTest
并将测试放在那里。我有一个集成测试任务
task integrationTests(type: Test) {
dependsOn 'assemble', 'integrationTestClasses'
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}
这样运行正常,但如果我尝试运行单个测试,它会告诉我它无法找到匹配的测试。我不希望每次编写新的测试时都要运行每个集成测试。有没有办法做到这一点?
答案 0 :(得分:34)
从Gradle 1.10开始,你可以写:
//select specific test method
gradle test --tests org.gradle.SomeTest.someFeature
//select specific test class
gradle test --tests org.gradle.SomeTest
//select all tests from package
gradle test --tests org.gradle.internal*
//select all ui test methods from integration tests by naming convention
gradle test --tests *IntegTest*ui*
//selecting tests from different test tasks
gradle test --tests *UiTest integTest --tests *WebTest*ui
在这里阅读更多内容 http://www.gradle.org/docs/1.10/release-notes#executing-specific-tests-from-the-command-line
答案 1 :(得分:18)
正确的语法是:
gradle testTaskName -DtestTaskName.single=...
在这种情况下:
gradle integrationTest -DintegrationTest.single=...
答案 2 :(得分:0)
以防万一有人来这里寻找答案。在gradle 5.0中已将其删除。在https://docs.gradle.org/current/userguide/upgrading_version_4.html
中查找test.single
如果您仍然希望以这种方式使用命令行选项,则应该可以使用--tests
命令行参数
$ ./gradlew integrationTest --tests=MyTest