我src/test/
文件夹中包含单元测试和功能测试。功能测试的类路径中包含单词cucumber
,而单元测试则没有。那么,我如何只运行单元测试呢?
非常感谢。
P.S.:我知道使用“包含”逻辑来选择测试很容易。例如,在我的情况下仅运行功能测试,我可以简单地使用此命令:
./gradlew test -Dtest.single=cucumber/**/
但是,我不知道如何简单地排除测试。
顺便说一下,我正在使用gradle 1.11。
我src/test/
文件夹中包含单元测试和功能测试。功能测试的类路径中包含单词cucumber
,而单元测试则没有。那么,我如何只运行单元测试呢?
非常感谢。
P.S.:我知道使用“包含”逻辑来选择测试很容易。例如,在我的情况下仅运行功能测试,我可以简单地使用此命令:
./gradlew test -Dtest.single=cucumber/**/
但是,我不知道如何简单地排除测试。
顺便说一下,我正在使用gradle 1.11。
信用: 这篇回答的灵感来自JB Nizet的答案。它被发布是因为它更直接地回答了我的问题。
要仅运行单元测试,请创建一个新任务,如下所示:
task unitTest( type: Test ) {
exclude '**/cucumber/**'
}
这样我们就有了:
运行所有测试:./gradlew test
运行所有单元测试:./gradlew unitTest
运行所有功能测试:./gradlew test -Dtest.single=cucumber/**/
该任务的文档解释了它,包括示例和其他细节:
apply plugin: 'java' // adds 'test' task
test {
// ...
// explicitly include or exclude tests
include 'org/foo/**'
exclude 'org/boo/**'
// ...
}
cucumberTest
的新任务,类型为Test
,仅包含黄瓜测试,并创建第三个任务allTests
,它依赖于test
和cucumberTest
。然后可以运行test
来运行单元测试,运行cucumberTest
来运行黄瓜测试,运行allTests
来运行所有测试。 - JB Nizet您可以基于外部系统属性来排除此内容。
-Dtest.profile=integration
并在 build.gradle 文件中
test {
if (System.properties['test.profile'] != 'integration') {
exclude '**/*integrationTests*'
}
}
你也可以在build.gradle
中定义自定义标志:
test {
if (project.hasProperty('excludeTests')) {
exclude project.property('excludeTests')
}
}
然后在命令行中:
gradle test -PexcludeTests=com.test.TestToExclude