Подтвердить что ты не робот

Как настроить JUnit Ant задачу только для вывода результатов при сбоях?

Я настраиваю 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 task, включая:

  • printsummary
  • showoutput
  • formatter элемент с каждым типом type

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

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

4b9b3361

Ответ 1

Одна из возможностей заключалась бы в том, чтобы определить свой собственный форматировщик 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) билет)


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

EclipseTestRunner из eclipse - хороший пример.