我在一个java main方法中运行Junit Test Runner作为TestRunner.run(套件)并在本地运行,并成功运行。我被困住的是我从comamnd行运行的每个测试套件都会产生一个
好的(1次测试)...... 好的(2次测试)......
我不想要这种行为。有什么方法可以摆脱这个吗?我搜索了很多,似乎没有人在解决这个问题。
方法规则和类规则注释似乎是在套件级别处理事物(拦截器)但我无法覆盖junit提供的套件输出
非常感谢任何有关此事的指示
答案 0 :(得分: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);