gpt4 book ai didi

java - 如何在Java中使用Gradle Test类的afterSuite方法?

转载 作者:行者123 更新时间:2023-11-30 05:25:05 26 4
gpt4 key购买 nike

我正在用 Java 编写一个 gradle 插件。我在网上找到了 groovy 代码来总结测试结果,我想将其转换为 Java 插件。

我尝试在 Java 中使用 afterSuite(Closureclosure) 时出现错误。无方法签名:org.test.sample.GreetingPlugin$1.doCall() 适用于参数类型:() 值:[]

我的java代码

Test testTask = (Test) project.getTasksByName("test", false).iterator().next();

testTask.afterSuite(new Closure<>(null){
@Override
public Object call() {
System.out.println("Done !");
return true;

}
});

我将 call() 方法保持在最低限度以尝试语法。编译很好,但在运行时失败。请指教。

最佳答案

我明白了。文档位于https://docs.groovy-lang.org/docs/groovy-2.5.8/html/gapi/groovy/lang/Closure.html?is-external=true使我困惑。我没有使用重写 call() 方法,而是使用 doCall() 方法并且它有效。

以下代码会将 gradle 测试结果格式化为类似这样的内容。

<小时/>

结果:6 次测试成功,6 次成功,0 次失败,0 次跳过

Test testTask = (Test) project.getTasksByName("test", false).iterator().next();
testTask.afterSuite(new Closure<Void>(testTask) {
@SuppressWarnings("unused")
public void doCall(TestDescriptor desc,TestResult result) {
if(desc.getParent()==null) {
String output = "RESULT: "+ result.getResultType()+" "+result.getTestCount()+" TESTS, "+result.getSuccessfulTestCount()+" SUCCESSES, "+result.getFailedTestCount()+" FAILURES, "+result.getSkippedTestCount()+" SKIPPED";
String lines = Stream.generate(()->"-").limit(output.length()).collect(Collectors.joining());
System.out.println("\u001B[33m"+"\n" + lines + "\n" + output + "\n" + lines);
}
}
});

关于java - 如何在Java中使用Gradle Test类的afterSuite方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847360/

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