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

Как я могу выполнить задачу Ant JUnit, запускать все тесты, а затем останавливать остальную часть сборки, если какой-либо тест не прошел

Я запускаю JUnit через Ant с помощью целевого объекта примерно так:

<target name="junit" depends="compile">
    <mkdir dir="${report.dir}"/>
    <junit printsummary="yes" haltonfailure="yes" showoutput="yes" >
        <classpath>
            <path refid="classpath"/>
            <path location="${classes.dir}"/>
        </classpath>
        <formatter type="brief" usefile="false"/>
        <formatter type="xml"/>

        <batchtest fork="yes" todir="${report.dir}">
            <fileset dir="${src.dir}" includes="**/*Tests.java" />
        </batchtest>
    </junit>
</target>

У меня есть класс вроде этого:

public class UserTests extends TestCase {

    public void testWillAlwaysFail() {
        fail("An error message");
    }
    public void testWillAlwaysFail2() {
        fail("An error message2");
    }
}

haltonfailure="yes", похоже, заставляет сборку останавливаться, как только какой-либо один тест завершился неудачно, запустив только первый сбой теста. Установка "off" приводит к успешному завершению всей сборки (даже если сообщения об ошибках теста записываются на выход).

Что я хочу, чтобы все тесты выполнялись (даже если один из них был неудачным), а затем сборка должна быть остановлена, если какие-либо тесты не удались.

Можно ли это сделать?

4b9b3361

Ответ 1

Вы можете установить атрибут failureproperty задачи junit, затем затем проверить свойство с помощью fail задача:

<junit haltonfailure="no" failureproperty="test.failed" ... >
   ...
</junit>
<fail message="Test failure detected, check test results." if="test.failed" />