Java ANT Jenkins单元测试-失败测试计数

Java ANT Jenkins单元测试-失败测试计数,java,unit-testing,ant,jenkins,Java,Unit Testing,Ant,Jenkins,我想统计失败的测试,并在所有测试完成后只失败一次。Jenkins每天晚上都会运行这些测试,如果出现故障或错误,就会报告结果。问题是我甚至无法开始计数,因为这只有failureProperty和errorProperty,可以是true或false,但当它到达第一个失败或错误测试时,它会停止并失败。我没有找到谷歌的好解决方案,他们向我推荐了这些属性,但他们没有满足我的需要 代码如下: <junit printsummary="true" fork="yes" forkmode

我想统计失败的测试,并在所有测试完成后只失败一次。Jenkins每天晚上都会运行这些测试,如果出现故障或错误,就会报告结果。问题是我甚至无法开始计数,因为这只有failureProperty和errorProperty,可以是true或false,但当它到达第一个失败或错误测试时,它会停止并失败。我没有找到谷歌的好解决方案,他们向我推荐了这些属性,但他们没有满足我的需要

代码如下:

        <junit printsummary="true" fork="yes" forkmode="once" 
showoutput="false" haltonfailure="no" maxmemory="1024m" 
errorProperty="test.failed" failureProperty="test.failed">
            <classpath refid="junit.classpath" />
            <batchtest fork="yes" todir="${junit.dir}/raw" >
                <formatter type="xml" />
                <fileset dir="${classes.dir}">
                    <include name="**/*Test.class" />
                    <exclude name="*ear*/**"/>
                    <exclude name="**/Base*.class" />
                    <exclude name="**/JNDI*.class" />
                </fileset>
            </batchtest>
        </junit>
    <fail message="At least one test failed or has errors, please check test results in Jenkins to see details!" if="test.failed" />

我错过了什么重要的事情吗?在这种情况下,haltonfailure=“no”参数似乎不起作用


如果你能帮助我,请提前感谢

您需要使用ant的
junitreport
生成报告。这将输出一个xml文件,jenkins将很好地计算并显示该文件,如果您感兴趣,还将显示演化图等。

将JUnit属性
haltonerror
haltonfailure
设置为false。然后使用各种报告工具解析生成的报告。报告可以是XML格式,您可以使用它来解析文件。我更喜欢Jenkins,它会向我展示每个构建,失败的JUnit测试的数量,以及各种漂亮的报告。其他人使用各种XSLT程序(这实际上就是JUnitreport)

Word'o小心:如果使用JUnitReport,您可能需要在Ant的lib目录中添加一些额外的jar。我已经有一段时间没有使用JUnitReport了,但我记得我需要Xalan,但这是Java现在提供的功能。

还可以从另一个类似的问题中查看如何配置junit目标以执行和生成报告。生成报告后,使用JUnit测试报告生成生成生成后操作进行配置


您是否也尝试过使用printsummary=“WithoutAnder”并进行了检查?这对我来说非常好。

谢谢,这会很好,但是在这种情况下,我可以在ant中调用吗?我是说Jenkins需要这个来发送警告邮件。我之所以需要它,是因为我想在邮件失败时发送邮件。@csbalazs,默认情况下,Jenkins不会使构建测试失败。相反,它会认为它是“不稳定的”。因此,你会得到三种可能的结果(如果你愿意,所有这些结果都可以发送电子邮件):蓝色=成功,黄色=不稳定(测试失败)和红色=失败。嗯,但我编辑了这个问题,不清楚我真正想要的是什么。:)好:)另外,看看我的意思,例如,有些球是黄色的(失败的测试),有一个测试历史图。你是对的,直到我开始使用errorproperty和failureproperty,它完成了所有的测试,ant build成功了,所以它几乎满足了我的要求,只是当我看到至少一个单元测试失败或出错时,我需要人为地终止ant任务。不幸的是,如果我使用errorproperty和failureproperty,然后使用这些属性失败,单元测试将在第一次出现失败或错误时停止运行。但是谢谢,如果没有办法杀死Endo上的ant任务,这将是有用的嘿,我刚刚找到了你的答案的副本,这似乎很有效。检查可能的副本,我发现了问题所在。errorProperty=“test.failed”failureProperty=“test.failed”与fail一起工作我有更多的单元测试,因此脚本只在第一个单元测试中幸存!我有点盲目,但这给了我一个想法。谢谢大家!!为了记录在案,我创建了一个全局变量,该变量为false,如果测试失败,我将切换为true。然后我运行了所有单独的测试,我称之为fail ant方法。