Gradle:排除/包含扩展特定类的测试类

时间:2016-09-26 15:38:52

标签: java gradle junit

在我的项目中有两种类型的测试:简单的单元测试和UI自动化的验收测试。所有验收测试都扩展了一个共同的基类:

import org.junit.Test;

public class MyAcceptanceTest extends AbstractAcceptanceTest {
    @Test
    public void someTest() {...}
}

是否可以使用gradle过滤测试,以便只执行验收测试?

我的主要目标是使用gradle build仅执行正常的单元测试(除了从AbstractAcceptanceTest扩展的测试类之外的所有测试类。)

第二个目标是让一个单独的任务只执行验收测试(只有扩展AbstractAcceptanceTest的测试类)。但是,使用此任务执行所有测试也是可以的(无过滤)。

据我在文档和Google搜索中发现,只能通过文件名模式进行过滤。但也许有一些groovy魔术允许这样过滤?

修改

我找到了一个有效的解决方案,但感觉有点hacky: 我已经从JUnit向基类(@Category)添加了AbstractAcceptanceTest注释。该类别需要一个标识符类,我已经为其创建了一个类com.example.AcceptanceTest。在我的gradle.build文件中,我正在使用此配置:

task acceptanceTests (type: Test) {
    test {
        useJUnit {
            includeCategories 'com.example.AcceptanceTest'
        }
    }
}


test {
    useJUnit {
        excludeCategories 'com.example.AcceptanceTest'
    }
}

这样,验收测试不会在正常构建中执行,而只能使用gradle acceptanceTests

0 个答案:

没有答案