gpt4 book ai didi

ant - 使用 Ant Task 立即进行 JUnit 测试日志记录

转载 作者:行者123 更新时间:2023-12-01 22:31:06 25 4
gpt4 key购买 nike

我的 build.xml 中有以下内容:

<junit fork="yes" printsummary="yes" filtertrace="yes">
<classpath>...</classpath>
<test name="tests.AllTests"/>
<formatter type="plain" usefile="false"/>
</junit>

我希望每个测试完成后立即报告 JUnit 结果,不幸的是 JUnit 任务仅在整个测试用例完成后才打印测试结果。测试用例(AllTests)相当大,所以我必须等待很长一段时间才能输出。有什么办法可以制作<junit>立即打印单独的测试结果?

最佳答案

我按照 dkatzel 的建议编写了自己的 JUnitResultFormatter。这是我的 JUnitFormatter 的代码:

package util;

import java.io.OutputStream;
import java.io.PrintStream;

import junit.framework.AssertionFailedError;
import junit.framework.Test;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter;
import org.apache.tools.ant.taskdefs.optional.junit.JUnitTest;

public class SimpleTestFormatter implements JUnitResultFormatter {
private PrintStream out = System.out;

@Override
public void addError(Test test, Throwable error) {
logResult(test, "ERR");
out.println(error.getMessage());
}

@Override
public void addFailure(Test test, AssertionFailedError failure) {
logResult(test, "FAIL");
out.println(failure.getMessage());
}

@Override
public void endTest(Test test) {
logResult(test, "PASS");
}

@Override
public void startTest(Test test) { }

@Override
public void endTestSuite(JUnitTest testSuite) throws BuildException { }

@Override
public void setOutput(OutputStream out) {
this.out = new PrintStream(out);
}

@Override
public void setSystemError(String err) {
// don't echo test error output
}

@Override
public void setSystemOutput(String out) {
// don't echo test output
}

@Override
public void startTestSuite(JUnitTest testSuite) throws BuildException { }

private void logResult(Test test, String result) {
out.println("[" + result + "] " + String.valueOf(test));
out.flush();
}
}

这就是我在 Ant 脚本中使用它的方式:

<junit fork="yes" printsummary="yes" filtertrace="yes">
<classpath>...</classpath>
<test name="tests.AllTests"/>
<formatter classname="util.SimpleTestFormatter" usefile="false"/>
</junit>

请注意,该类必须使用类路径上的 ant.jarant-junit.jar 进行编译。

关于ant - 使用 <junit> Ant Task 立即进行 JUnit 测试日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18293054/

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