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

Я запускаю 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", кажется, вызывает сборкучтобы остановить, как только какой-либо один тест провалился, регистрируя только первый проваленный тест.Если для этого параметра установлено значение «Выкл.», Вся сборка будет выполнена успешно (даже если в вывод выводятся сообщения об ошибках теста).

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

Возможно ли это сделать?

1 Ответ

41 голосов
/ 28 октября 2010

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

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