2010-10-27 3 views
20

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

<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» приводит к успешному завершению всей сборки (даже если сообщения об ошибках теста записываются на выход).

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

Возможно ли это?

ответ

39

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

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

Это имеет смысл. Благодарю. –