Как настроить задачу Ant JUnit для вывода только при сбоях? - PullRequest
18 голосов
/ 08 июня 2009

Я настраиваю JUnit в Ant, чтобы модульные тесты запускались при каждой сборке. Я бы хотел, чтобы вывод с ошибками тестов печатался в выводе консоли Ant при каждом запуске. Мне не нужно видеть вывод из последующих тестов.

Вот соответствующий бит моего build.xml файла:

<junit>
    <classpath>
        <pathelement path="${build}"/>
    </classpath>
    <formatter type="brief" usefile="false"/>
    <batchtest>
        <fileset dir="${src}" includes="my/tree/junit/"/>
    </batchtest>
</junit>

Это дает почти то, что я хочу, провальные тесты подробно описаны в выводе Ant, за исключением того, что последующие тесты также записывают следующий вывод:

    [junit] Testsuite: my.tree.junit.ExampleTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec

Я полагаю, что перепробовал все комбинации, перечисленные в документации JUnit , включая:

  • printsummary атрибут
  • showoutput атрибут
  • formatter элемент с каждым видом type

Мой вариант использования запускается ant из командной строки. Поскольку я пишу больше тестов, я не хочу, чтобы результаты последующих тестов были такими большими, что результаты неудачных тестов прокручивались за пределы экрана. Я просто хочу, чтобы ant был тихим, если только не пройдёт тест, требующий моего внимания. Как я могу настроить Ant / JUnit для этого?

Я использую Ant версии 1.6.4 и JUnit 4.6.

1 Ответ

13 голосов
/ 08 июня 2009

Одной из возможностей может быть определение собственного XML-форматера с атрибутом classname (и расширением org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter, потенциально ничего не делая с endTest() или endTestsuite() методами ).
Этот форматер будет игнорировать информационное сообщение и отображать только сообщения об ошибках.


Примечание: в этих настройках упоминается возможность отображения только неудачных тестов:

<junit showoutput="true"
       fork="true"
       failureproperty="tests.failed"
       errorproperty="tests.failed">
    <batchtest todir="${test.results.dir}">
        <fileset dir="test">
            <include name="**/*Test.java"/>
        </fileset>
    </batchtest>
    <classpath path="${classes.dir}:${junit.jar}:${test.classes.dir}"/>
    <formatter usefile="false" type="brief"/>
    <!-- <formatter type="xml"/> If missing, only displays failed tests -->
</junit>

Вы проверяли это?

Примечание: «showoutput="true" и <formatter type="brief" usefile="false"/>» могут быть немного проблематичными, как показано на этом недавнем (февраль 2012) билете )


Еще одним подходом было бы определить ваш муравейник Juint Test Runner, поддерживающий муравей JUnitResultFormatter и отображающий только сообщения stderr.

Хороший пример - EclipseTestRunner из затмения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...