是否有一种方法可以使用Ant和JUnit从类中只运行特定的测试?



动机:目前我有多个用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 ?请只建议真正可以节省时间的解决方案,不要说诸如"在需要调试时创建单独的测试套件"之类的话。

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

的例子:

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

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

相关内容

  • 没有找到相关文章

最新更新