Как я могу выполнить задачу 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" приводит к успешному завершению всей сборки (даже если сообщения об ошибках теста записываются на выход).
Что я хочу, чтобы все тесты выполнялись (даже если один из них был неудачным), а затем сборка должна быть остановлена, если какие-либо тесты не удались.
Можно ли это сделать?
Ответы
Ответ 1
Вы можете установить атрибут failureproperty
задачи junit
, затем затем проверить свойство с помощью fail
задача:
<junit haltonfailure="no" failureproperty="test.failed" ... >
...
</junit>
<fail message="Test failure detected, check test results." if="test.failed" />