20

-Dtest.single我正在尝试使用 gradle 的标志运行单个集成测试。我添加了另一个源集,src/integrationTest并将测试放在那里。我有一个集成测试任务

task integrationTests(type: Test) {
    dependsOn 'assemble', 'integrationTestClasses'    
    testClassesDir = sourceSets.integrationTest.output.classesDir
    classpath = sourceSets.integrationTest.runtimeClasspath
}

这运行良好,但如果我尝试运行单个测试,它会告诉我它找不到匹配的测试。我不想在每次编写新测试时都运行每个集成测试。有没有办法做到这一点?

4

3 回答 3

38

从 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

于 2014-08-22T08:23:23.017 回答
23

正确的语法是:

gradle testTaskName -DtestTaskName.single=...

在这种情况下:

gradle integrationTest -DintegrationTest.single=...

于 2013-08-05T15:57:33.893 回答
1

以防有人来这里寻找答案。这已在 gradle 5.0 中删除。test.singlehttps://docs.gradle.org/current/userguide/upgrading_version_4.html中查找

如果您仍然希望在这种样式中使用命令行选项,您应该能够使用--tests命令行参数。请参阅https://docs.gradle.org/current/userguide/java_testing.html#simple_name_pattern

$ ./gradlew integrationTest --tests=MyTest
于 2020-09-29T02:20:19.850 回答