如何在 gradle cmd 中 include/exclude junit5 标签?
How to include/exclude junit5 tags in gradle cmd?
我想执行标记的 JUnit 5 测试,例如。只有慢速测试, gradle.
我想在 maven 中做同样的事情:
mvn test -Dgroups="slow"
但是 gradle 中的等价物是什么?还是什么都没有?
执行所有标有@Tag("slow")
的JUnit 5测试。我知道创建这样的专用任务非常简单:
tasks.withType(Test::class.java).configureEach {
useJUnitPlatform() {
includeTags("slow")
}
}
但是我有很多不同的标签,我不想为每个标签分配一个任务。或者更糟的是,所有排列都有一个任务。
另一种可能性是像这样将自定义属性传递给任务
tasks.withType(Test::class.java).configureEach {
val includeTagsList = System.getProperty("includeTags", "")!!.split(",")
.map { it.trim() }
.filter { it.isNotBlank() }
if (includeTagsList.isNotEmpty()) {
includeTags(*includeTagsList.toTypedArray())
}
}
我上次检查时,Gradle 没有通过命令行配置 JUnit 平台包含和排除标记的内置支持,因此您必须采用第二种方法。
但是...不需要拆分、映射和过滤标签:只需使用 标签表达式 代替:https://junit.org/junit5/docs/current/user-guide/#running-tests-tag-expressions
您可以创建一个单独的任务并选择要运行 任务还是跳过它。
例如在 build.gradle:
中添加此代码
def slowTests= tasks.register("slowTests", Test) {
useJUnitPlatform {
includeTags "slow"
}
}
现在,如果你想 运行 只进行慢速测试:
./gradlew clean build -x test slowTests
我想执行标记的 JUnit 5 测试,例如。只有慢速测试, gradle.
我想在 maven 中做同样的事情:
mvn test -Dgroups="slow"
但是 gradle 中的等价物是什么?还是什么都没有?
执行所有标有@Tag("slow")
的JUnit 5测试。我知道创建这样的专用任务非常简单:
tasks.withType(Test::class.java).configureEach {
useJUnitPlatform() {
includeTags("slow")
}
}
但是我有很多不同的标签,我不想为每个标签分配一个任务。或者更糟的是,所有排列都有一个任务。
另一种可能性是像这样将自定义属性传递给任务
tasks.withType(Test::class.java).configureEach {
val includeTagsList = System.getProperty("includeTags", "")!!.split(",")
.map { it.trim() }
.filter { it.isNotBlank() }
if (includeTagsList.isNotEmpty()) {
includeTags(*includeTagsList.toTypedArray())
}
}
我上次检查时,Gradle 没有通过命令行配置 JUnit 平台包含和排除标记的内置支持,因此您必须采用第二种方法。
但是...不需要拆分、映射和过滤标签:只需使用 标签表达式 代替:https://junit.org/junit5/docs/current/user-guide/#running-tests-tag-expressions
您可以创建一个单独的任务并选择要运行 任务还是跳过它。 例如在 build.gradle:
中添加此代码def slowTests= tasks.register("slowTests", Test) {
useJUnitPlatform {
includeTags "slow"
}
}
现在,如果你想 运行 只进行慢速测试:
./gradlew clean build -x test slowTests