代码之家  ›  专栏  ›  技术社区  ›  Redwood

如何让Ant JUnit任务运行所有测试,然后在任何测试失败时停止构建的其余部分

  •  20
  • Redwood  · 技术社区  · 14 年前

    我正在通过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”将导致整个生成成功(即使测试失败消息已写入输出)。

    我希望它运行所有测试(即使其中一个测试失败),然后在任何测试失败时停止生成。

    有可能这样做吗?

    1 回复  |  直到 14 年前
        1
  •  41
  •   martin clayton egrunin    14 年前

    你可以设置 failureproperty junit 任务,然后使用 fail 任务:

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