Как переопределить вывод JUnit Test Suite по умолчанию

Я запускаю Junit Test Runner как TestRunner.run(suite) в основном методе java и запускаю его локально, который успешно запускается. Я застрял в том, что каждый набор тестов, который я запускаю из командной строки, создает

ОК (1 тест) ... ОК (2 тест) ...

Я не хочу такого поведения. Есть ли способ избавиться от этого? Я много искал, и никто, кажется, не занимается этим.

Аннотации правила метода и правила класса, похоже, обрабатывают вещи на уровне набора (перехватчики), но я не могу переопределить вывод набора, который предоставляет junit

Любые указатели на это очень ценятся


person Nitin    schedule 29.03.2012    source источник


Ответы (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);
person Gray    schedule 29.03.2012