【问题标题】:ANT Jenkins unit test - count failed testsANT Jenkins 单元测试 - 计算失败的测试
【发布时间】:2013-02-08 13:56:28
【问题描述】:

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

代码如下:

        <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" 参数不起作用。

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

【问题讨论】:

  • 哦,嘿,我刚刚找到了您的重复答案,这似乎有效。检查accepted answer here
  • 我发现了问题所在。 errorProperty="test.failed" failureProperty="test.failed" 适用于 fail 我有更多的单元测试,所以脚本只能在第一个测试中幸存!我有点盲目,但这给了我一个想法。谢谢大家!
  • 为了记录,我创建了一个全局变量,它是假的,如果测试失败,我切换到真。然后在我运行所有单独测试的地方,我调用了 fail ant 方法。

标签: java unit-testing ant jenkins


【解决方案1】:

您需要使用 ant 的junitreport 生成报告。这会输出一个 xml 文件,jenkins 会很好地为您计算和显示,如果您有兴趣,还会输出进化图等。

【讨论】:

  • 谢谢,这很好,但在这种情况下,我可以在 ant 中调用 吗?我的意思是詹金斯需要这个来发送警告邮件。我之所以需要这个,是因为我想在邮件失败时发送邮件。
  • @CsBalazsHungary Jenkins,默认情况下不会因测试失败而导致构建失败。相反,它将认为它“不稳定”。因此,您会得到三种可能的结果(如果您愿意,所有这些都可以发送电子邮件):blue=success、yellow=unstable(测试失败)和 red=failed
  • 嗯,但我编辑了这个问题,不清楚我真正想要什么。 :)
  • Ok :) 另外,看看我的意思,例如here,其中一些球是黄色的(测试失败)并且有一个测试历史图表
  • 你是对的,直到我开始玩errorproperty和failureproperty,它使所有的测试和ant build成功,所以它几乎可以做到我想要的,只是我需要人工杀死ant当我看到至少一个单元测试失败或错误时执行任务。
【解决方案2】:

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

注意事项:如果您使用 JUnitReport,您可能需要在 Ant 的 lib 目录中添加一些额外的 jar。我有一段时间没用过 JUnitReport,但我记得我需要 Xalan,但这是现在 Java 自带的东西。

【讨论】:

  • 遗憾的是,如果我使用 errorproperty 和 failureproperty 然后使用这些属性失败,单元测试会在第一次发生故障或错误时停止运行。但是谢谢,如果最后没有办法杀死蚂蚁任务,那将很有用
【解决方案3】:

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

您是否也尝试过使用 printsummary="withOutAndErr" 并检查过?这对我来说完全没问题。

【讨论】:

    猜你喜欢
    • 2017-03-20
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2016-05-23
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多