Gradle:如何排除一些测试?

时间:2014-03-05 21:02:41

标签: java unit-testing gradle

我的src/test/文件夹包含单元和功能测试。功能测试的类路径具有单词cucumber,而单元测试则没有。那么,我怎样才能运行单元测试呢?

非常感谢你。

P.S。:我知道使用“包含”逻辑来选择测试很容易。例如,为了仅在我的情况下运行功能测试,我可以简单地使用这个 ./gradlew test -Dtest.single=cucumber/**/
但是,我不知道如何以简单的方式排除测试。

BTW,我正在使用gradle 1.11。

4 个答案:

答案 0 :(得分:31)

信用:这个答案的灵感来自JB Nizet的回答。它被发布是因为它更直接我的问题。

要仅运行单元测试,请创建一个如下所示的新任务:

task unitTest( type: Test ) {
    exclude '**/cucumber/**'
}

这样我们有:
运行所有测试:./gradlew test
运行所有单元测试:./gradlew unitTest
运行所有功能测试:./gradlew test -Dtest.single=cucumber/**/

答案 1 :(得分:20)

该任务的

The documentation解释了它,并举例说明了一切:

apply plugin: 'java' // adds 'test' task

test {
  // ...

  // explicitly include or exclude tests
  include 'org/foo/**'
  exclude 'org/boo/**'

  // ...
}

答案 2 :(得分:4)

您可以根据外部系统属性将其排除。

-Dtest.profile=integration

和build.gradle

test {
    if (System.properties['test.profile'] != 'integration') {
    exclude '**/*integrationTests*'
   }
}

答案 3 :(得分:2)

您还可以在ghci> import Data.Text (pack) ghci> import Data.Text.Encoding ghci> streamDecodeUtf8 (encodeUtf8 (Data.Text.pack "\xed")) Some "\237" "" _ 中定义自定义标志:

build.gradle

然后在命令行中:

test {
    if (project.hasProperty('excludeTests')) {
        exclude project.property('excludeTests')
    }
}