通过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获得相同行为的建议。
答案 0 :(得分:4)
IDEA在单个JVM实例中运行所有测试,而您通过Ant分支在其自己的JVM实例中运行每个测试。由于您的代码中有单例,因此结果可能会有所不同。虽然此功能已计划好,但IDEA暂时无法选择测试。
由于您使用的是单身人士,因此执行顺序也可能如此。 IDEA按字母顺序运行测试,无法更改。因此,要获得相同的行为,如果测试顺序很重要,那么您需要告诉Ant以相同的顺序运行测试(这不是一个好主意)。
此外,您通过Ant排除了一些测试,IDEA没有此类选项。如果您的其他测试取决于排除的测试,结果会有所不同。