我正在编写一个测试工具和一组 junit 测试来测试各种环境中的各种 HTTP 方法。目前我已经编写了一堆测试,最终我想做的是能够将 Junit 测试中的所有错误/失败输出到文本文件中。实现这一目标的最佳方法是什么?
例如,如果测试失败,我想说 junit 测试的名称,以及一些信息(这些信息可能来自 Test Harness 类,例如响应状态码和状态码描述)。
我正在编写一个测试工具和一组 junit 测试来测试各种环境中的各种 HTTP 方法。目前我已经编写了一堆测试,最终我想做的是能够将 Junit 测试中的所有错误/失败输出到文本文件中。实现这一目标的最佳方法是什么?
例如,如果测试失败,我想说 junit 测试的名称,以及一些信息(这些信息可能来自 Test Harness 类,例如响应状态码和状态码描述)。
尝试使用Apache Log4J。
另一种方法是将信息发送到文件。检查本教程。当您的测试失败时,您可以只append()
将信息保存到您的文件中。
.append(this.class() + respone.getStatus() + response.getCode());
您应该使用https://github.com/junit-team/junit/wiki/Rules#testwatchmantestwatcher-rules上详述的 TestWatcher
public class WatchmanTest {
private static String watchedLog;
@Rule
public TestRule watchman = new TestWatcher() {
@Override
public Statement apply(Statement base, Description description) {
return super.apply(base, description);
}
@Override
protected void succeeded(Description description) {
watchedLog += description.getDisplayName() + " " + "success!\n";
}
@Override
protected void failed(Throwable e, Description description) {
watchedLog += description.getDisplayName() + " " + e.getClass().getSimpleName() + "\n";
}
@Override
protected void skipped(AssumptionViolatedException e, Description description) {
watchedLog += description.getDisplayName() + " " + e.getClass().getSimpleName() + "\n";
}
@Override
protected void starting(Description description) {
super.starting(description);
}
@Override
protected void finished(Description description) {
super.finished(description);
}
};
@Test
public void fails() {
fail();
}
@Test
public void succeeds() {
}
}
您将实现这些方法,JUnit 会在您的 failed() 方法上给您一个回调,但会导致失败的异常和一个包含有关测试的更多信息的 Description 对象。您还应该查看该页面上的 ExternalResource 类,因为它详细说明了如何可靠地设置和拆除要在 TestWatcher 中使用的资源,例如要写入的文件。