我想确保只有在启用特定测试的情况下,特定的gradle任务才在测试之前运行。
例如,假设我有一个名为TranslationTests的测试,看起来像这样:
@EnabledIfSystemProperty(named = "org.shabunc.tests.TranslationTests", matches = "true")
class TranslationTests {
...
}
通过以下方式激活:
test {
if (project.hasProperty(projectProperty)) {
systemProperty(projectProperty, "org.shabunc.tests.TranslationTests")
}
}
现在,我想确保每次跑步:
gradle test -Porg.shabunc.tests.TranslationTests
在测试某些特定的gradle任务之前,例如触发gradle prepareTranslationSetup
。严格来说,我希望每次知道TranslationTests正在运行时都触发此任务-否则不要触发。
答案 0 :(得分:1)
您可以在任务onlyIf()
上使用prepareTranslationSetup
,并使test
依赖于任务。 onlyIf()
的定义如下:
您可以使用
onlyIf()
方法将谓词附加到任务。仅当谓词评估为true时,才会执行任务的操作。
(发件人:Authoring Tasks)
假设您有以下任务:
task doBeforeTest {
onlyIf {
project.hasProperty("runit")
}
doLast {
println "doBeforeTest()"
}
}
task runTest {
dependsOn = [ doBeforeTest ]
doLast {
println "runTest()"
}
}
doBeforeTest
的操作仅在项目具有指定的属性时才执行。 runTest
被配置为依赖于doBeforeTest
。现在,当您这样做
gradlew runTest --info
输出类似于
> Task :doBeforeTest SKIPPED
Skipping task ':doBeforeTest' as task onlyIf is false.
> Task :runTest
runTest()
您会看到doBeforeTest
被跳过,因为前提不满足。另一方面,运行
gradlew runTest -Prunit
按预期执行doBeforeTest
> Task :doBeforeTest
doBeforeTest()
> Task :runTest
runTest()