我正在通过ant运行我的junit测试,它们的运行速度远远低于IDE。我的蚂蚁电话是:
<junit fork="yes" forkmode="once" printsummary="off">
<classpath refid="test.classpath"/>
<formatter type="brief" usefile="false"/>
<batchtest todir="${test.results.dir}/xml">
<formatter type="xml"/>
<fileset dir="src" includes="**/*Test.java" />
</batchtest>
</junit>
在我的IDE(0.067s)中即时运行的相同测试在通过Ant运行时需要4.632秒。在过去,我已经能够通过使用junit fork参数来加速这样的测试问题,但在这种情况下这似乎没有帮助。我可以查看哪些属性或参数来加速这些测试?
更多信息:
我使用IDE中报告的时间与junit任务输出的时间。这不是蚂蚁运行结束时报告的总时间。
所以,奇怪的是,这个问题已经解决了。什么可能导致这个问题?系统在本地磁盘上运行,这不是问题。
答案 0 :(得分:4)
这是一个盲目的猜测:尝试通过使用嵌套的<jvmarg>
标记设置-Xmx
选项来增加分叉VM可用的最大堆大小。
答案 1 :(得分:4)
我猜这是因为你的antscript将结果输出到XML文件,而IDE则将这些结果保存在内存中。编写文件需要的时间比不写文件要长。
todir="${test.results.dir}/xml"
这是&lt; batchtest&gt;的一部分调用,告诉它将结果粘贴到该目录中。看起来它只是告诉它将结果粘贴在“当前目录”中,无论是什么。乍一看,我没有看到任何东西将其全部关闭。
答案 2 :(得分:1)
很难说出这些信息。我要做的第一件事是查看测试结果,并确定所有单个测试是否运行速度均匀,或者是否可以缩小到某个测试用例子集。
(我要做的第零件事就是确保我的ant任务使用与Eclipse相同的JVM,并且类路径依赖和导入的JAR真的完全相同)
答案 3 :(得分:1)
也许你看到的是因为Eclipse做了增量编译而Ant没有。你能否确认这个时间只是在测试目标中浪费了?
答案 4 :(得分:0)
为了记录,我发现了我的问题。我们一直在为这个项目使用代码混淆器,并且该混淆器的字符串加密部分被设置为“最大”。这减缓了字符串存在的任何操作。
将字符串加密调低到更快的模式可以解决问题。
答案 5 :(得分:0)
尝试将fork,formode和线程设置为这些值:
findXpath=page.find('label', '$12,420.94', :match => :prefer_exact).path
答案 6 :(得分:0)
对我来说,为forkmode="once"
元素添加<junit>
并为usefile="false"
元素添加<formatter>
会使测试运行得更快。同时删除您不需要的格式化程序。