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

我正在用Java编写gradle插件。我在网上找到了一些时髦的代码来总结要在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()方法保持在最小限度以尝试语法。编译很好,但在运行时失败。请指教。

he85367243 回答:如何在Java中使用Gradle Test类的afterSuite方法?

我知道了。 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);
                }           
            }
        });
本文链接:https://www.f2er.com/3106105.html

大家都在问