在Gradle中,我可以从命令行运行单个测试,如下所示:
gradle -Dtest.single=VeryCriticalTestX test
VeryCriticalTestX
经常单独执行,我想为我的开发人员提供更具可读性和灵活性的API。理想情况下,他们只需要运行
gradle testCritical
不用担心考试的名字。这也允许我在不破坏Jenkins构建的情况下随时更改名称。
我该如何做到这一点?
答案 0 :(得分:0)
Gradle的Test
- 可以将任务配置为仅包含与给定名称模式匹配的测试。您可以按如下方式创建新任务testCritical
:
task testCritical(type: Test) {
group = 'verification'
description = 'Runs a very critical test'
outputs.upToDateWhen { false }
include('**/VeryCriticalTestX.class')
}
有了这个,将VeryCriticalTestX
重命名为其他内容不会破坏其他人的命令或Jenkins工作。但是,有人可能会通过重命名VeryCriticalTestX
而不调整任务配置而意外禁用此任务。使用以下TaskExecutionListener
:
// verify that testCritical is not skipped unexpectedly due to a renamed classfile
// we detect this using Gradle's NO-SOURCE TaskState
gradle.addListener(new TaskExecutionListener() {
void beforeExecute(Task task) {}
void afterExecute(Task task, TaskState state) {
if (checkJooqEnumBindings.equals(task) && state.getNoSource()) {
throw new GradleException("testCritical did not run because it couldn't find VeryCriticalTestX")
}
}
})