有没有办法只从Ant和JUnit的类中运行特定的测试?

时间:2016-09-08 09:51:11

标签: junit ant

动机:目前我有多个用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>

正如您所看到的,<test name="me.enreach.automation.sanoma.SmokeTest" todir="${junit.output.dir}"/>表示它需要在SmokeTest类中运行所有测试。 我可以告诉它只运行让SmokeTest.createCampaign说出来吗? 请告知只能真正节省时间的解决方案,不要说“#34;在需要调试时创建单独的测试套件”等等。

1 个答案:

答案 0 :(得分:0)

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

示例:

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

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