使用JUnit通过Ant与IntelliJ IDEA的不同行为

时间:2011-03-17 22:36:52

标签: ant junit intellij-idea

通过IntelliJ IDEA 10运行某些集成测试并从命令行使用Ant时,我遇到了不同的行为。具体来说,调用单例的测试通过Ant失败并通过IDEA成功。我知道使用单例的垮台,但这是我继承的代码,并希望在删除之前创建测试:)

我已经确认两者都使用相同版本的JUnit(4.8.1)。

这是Ant build.xml文件的一个片段:

<junit printsummary="yes"
           fork="yes"
           forkmode="perTest"
           haltonfailure="no">
        <classpath refid="classpath.test"/>
        <formatter type="xml"/>
        <batchtest todir="${report.home}/tmp">
            <fileset dir="${test.home}">
                <include name="**/*Test.java"/>
                <exclude name="**/*TransactionalTests.java"/>
            </fileset>
        </batchtest>
    </junit>

由于我无法在IDEA中找到有关JUnit默认设置的文档,因此在运行测试时我无法确定它们是否/如何分叉等。

非常感谢任何有关通过Ant和IntelliJ获得相同行为的建议。

1 个答案:

答案 0 :(得分:4)

IDEA在单个JVM实例中运行所有测试,而您通过Ant分支在其自己的JVM实例中运行每个测试。由于您的代码中有单例,因此结果可能会有所不同。虽然此功能已计划好,但IDEA暂时无法选择测试。

由于您使用的是单身人士,因此执行顺序也可能如此。 IDEA按字母顺序运行测试,无法更改。因此,要获得相同的行为,如果测试顺序很重要,那么您需要告诉Ant以相同的顺序运行测试(这不是一个好主意)。

此外,您通过Ant排除了一些测试,IDEA没有此类选项。如果您的其他测试取决于排除的测试,结果会有所不同。