使用gradle自定义JUnit测试检测

时间:2012-11-30 12:41:15

标签: java junit gradle

我们的测试套件正在迅速发展,我们已经达到了功能测试依赖于其他系统的程度。

我们使用gradle测试任务来使用包含和排除过滤器来运行这些测试,但这变得很麻烦,因为我们必须以特定方式命名我们的测试。

我们目前的方法是以下列方式命名我们的测试:

class AppleSingleServiceTest {}
class BananaMultiServiceTest {}
class KiwiIntegrationTest {}

然后使用

在相关任务中包含测试
include '**/*SingleServiceTest.class'
include '**/*MultiServiceTest.class'
include '**/*IntegrationTest.class'

是否可以通过查看注释在gradle中找到测试类?

@SingleServiceTest
public class AppleTest {}

我认为任何未注释的测试都将作为正常的单元测试运行,因此如果您忘记注释更多功能测试,它将失败

单个服务测试的一个例子是selenium测试,其中SUT的任何外部依赖都是存根的

多服务测试的一个示例是一些但可能不是所有外部依赖项都没有存根的测试

3 个答案:

答案 0 :(得分:5)

Gradle 1.6开始,Gradle支持使用JUnit @Category选择测试,如下所示:

test {
    useJUnit {
        includeCategories 'org.gradle.junit.CategoryA'
        excludeCategories 'org.gradle.junit.CategoryB'
    }
}

更多详细信息,请参阅the docs

答案 1 :(得分:1)

您要求的功能目前尚不存在,但您可以在http://forums.gradle.org处发出功能请求。或者您可以使用(繁琐的)JUnit @Category,这需要您定义测试套件。

答案 2 :(得分:0)

我有类似的需要使用注释过滤测试。我最终设法创建了一个解决方案。它已发布here