gpt4 book ai didi

gradle - 测试后执行gradle任务

转载 作者:行者123 更新时间:2023-12-03 02:52:06 25 4
gpt4 key购买 nike

执行后 test Gradle 构建中的任务我想总是执行应该可以访问测试结果的附加任务。就像是:

task('afterTest') {
doLast {
if (testSuccessful) {
//
} else {
//
}
}
}

最佳答案

您的问题有两个部分:1)使自定义任务始终在 test 之后执行任务被执行,2) 使测试“结果”在这个自定义任务中可用。

1)第一部分很简单,你只需要使用专用的Task.finalizedBytest 之间创建“finalized by”依赖关系的方法任务和您的自定义任务。 (见 Finalizer tasks)

2)第二部分有点棘手,因为据我所知,Gradle 没有提供简单的方法来获得 test 的“结果”(成功或失败)。任务。但是你可以使用 Test Task 公开的 API将错误的测试数量存储到变量中并在您的自定义任务中测试此计数器:这是一个工作示例:

ext{
// counter of test cases in error
nbTestOnError = 0
}

test {
// use "afterTest" hook to increment nbTestOnError counter
afterTest { desc , result ->
if (result.getResultType().equals(TestResult.ResultType.FAILURE)){
nbTestOnError++
}
}
}

task('afterTest') {
doLast {
// implement your logic depending on counter value
if (nbTestOnError > 0) {
// do something if test failed
} else{
// do something when all tests passed
}
}
}

// create "finalized by" dependency
test.finalizedBy afterTest

编辑 :基于@lance-java 评论中的重要评论:为了支持最新检查,您可以将自定义任务配置为“跳过”如果 test任务没有执行。一个简单的方法是使用 Task upToDateWhen功能(见 here):
task('afterTest') {
// consider this task "UP TO DATE" if `test` task did not execute
outputs.upToDateWhen {
!test.didWork
}
doLast {
//...
}
}

关于gradle - 测试后执行gradle任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53963708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com