【问题标题】:How to override JUnit Test Suite default output如何覆盖 JUnit 测试套件默认输出
【发布时间】:2012-04-13 14:46:50
【问题描述】:
我在 java main 方法中将 Junit Test Runner 作为 TestRunner.run(suite) 运行,并在本地运行成功运行。我被卡住的是,我从命令行运行的每个测试套件都会产生一个
OK(1 次测试)...
好的(2 次测试)...
我不想要这种行为。有什么办法可以摆脱这个吗?我搜索了很多,似乎没有人解决这个问题。
方法规则和类规则注释似乎在套件级别(拦截器)处理事情,但我无法覆盖 junit 提供的套件输出
非常感谢任何关于此的指针
【问题讨论】:
标签:
java
testing
junit
annotations
test-suite
【解决方案1】:
TestRunner 类有一个setPrinter(ResultPrinter) 方法,允许您覆盖输出发生的情况。您也可以将一个传递给构造函数。默认打印机是:
new ResultPrinter(System.out);
例如,如果您将ResultPrinter 子类化,您可以关闭成功输出。像这样的东西应该可以工作:
public class MyResultPrinter extends ResultPrinter {
public MyResultPrinter(PrintStream writer) {
super(writer);
}
@Override
protected void printFooter(TestResult result) {
if (result.wasSuccessful()) {
// just drop the OK messages
} else {
// but print the failures
super.printFooter(result);
}
}
}
然后你会像这样使用它:
new TestRunner(new MyResultPrinter(System.out)).run(suite);