【问题标题】: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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2021-10-23
      相关资源
      最近更新 更多