在我的项目中有两种类型的测试:简单的单元测试和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
。