【问题标题】:Is there a way to run only specific test from a class with Ant and JUnit?有没有办法只运行具有 Ant 和 JUnit 的类的特定测试?
【发布时间】:2016-09-08 09:51:10
【问题描述】:

动机:目前我有多个用 Java 编写的测试套件,可以由 Ant 构建和运行。我在笔记本电脑上开发和完善测试,它们每晚都在云中的远程机器上运行。有时,由于各种原因,某些特定测试在本地通过但在云中永久失败。然后我需要调试。我现在是怎么做的:我将@Ignore注释添加到所有测试中,除了我需要调试的测试,提交我的代码,然后远程连接到云中的机器以查看我的笔记本电脑上发生了什么,然后运行该套件云端。这样,套件中只有一个测试执行,并且通过 RDP 我可以看到失败的地方。这是我可以忍受的,但是添加这些 @Ignore 注释然后在调试时将它们从所有测试中删除,这让我很困扰。如果 Ant 中有一种方法可以告诉目标不要运行执行所有测试但只执行一个特定测试的特定类,那就太好了。

一个特定套件的 Ant 目标示例:

<target name="ADMPSmokeTest">
        <mkdir dir="${junit.output.dir}"/>
        <junit fork="yes" printsummary="withOutAndErr" showoutput="true">
            <formatter type="xml"/>
            <test name="me.enreach.automation.sanoma.SmokeTest" todir="${junit.output.dir}"/>
            <classpath refid="QARegression.classpath"/>
        </junit>
</target>

如您所见,&lt;test name="me.enreach.automation.sanoma.SmokeTest" todir="${junit.output.dir}"/&gt; 表示它需要运行 SmokeTest 类中的所有测试。 我可以以某种方式告诉它只运行让我们说 SmokeTest.createCampaign 吗? 请只建议真正可以节省时间的解决方案,不要说“在需要调试时创建单独的测试套件”等。

【问题讨论】:

    标签: junit ant


    【解决方案1】:

    是的,有。您可以将methods 属性添加到test 元素。这应该允许您从name 属性中指定的类中提供一个逗号分隔的方法名称列表,尽管我无法让它与多个方法一起使用。

    例子:

    <test name="me.enreach.automation.sanoma.SmokeTest" methods="createCampaign"/>
    

    在 Ant 1.8.2 中添加了对 methods 的支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多