我有一个名为ITEM_ROOTDIR.tests的System属性。它的值为abc,xyz。对于基于ANT的任务,如何在src文件夹中找到abc.java和xyz.java?(src文件夹在basedir中,basedir已声明为".")一旦我找到文件,我可以在include任务中使用这多个文件吗?如果没有,如何包括它们?
最好只找到文件并将结果存储回ITEM_ROOTDIR.tests中,然后在include任务中再次使用该属性。
在我看来,您是在通过单独运行测试为自己创建工作。
这是我的标准测试目标:
<target name="test" depends="compile" description="Run unit tests">
<mkdir dir="${build.dir}/tests"/>
<junit printsummary="yes" haltonfailure="${junit.haltonfailure}">
<classpath>
<path refid="runtime.path"/>
<pathelement path="${classes.dir}"/>
</classpath>
<formatter type="plain"/>
<batchtest fork="yes" todir="${build.dir}/tests">
<fileset dir="${src.dir}" includes="**/*Test*.java"/>
</batchtest>
</junit>
</target>
在我的"src"目录中运行测试,生成所有测试的合并报告。
更新
运行时间过长的测试是一个非常常见的问题。标准答案是重构测试,使其运行得更快……:-(
意见各不相同,但根据我的经验,最好的解决方案是将你的测试分为不同的类别。
- 单元测试(模拟的,所以应该运行得很快并涵盖所有功能)
- 快速集成测试
- 缓慢的集成测试
我将单元测试作为构建的一部分运行,将集成测试作为单独的Jenkins作业(部署后)运行。这解决了我对即时反馈的需求,并将我的测试报告分为3类,而不是强迫我跟踪每个单独的测试。
反对单独测试的另一个论点是,在一个大团队中,你看不到你的更改对代码库其他部分的影响。这毕竟是一个团队的努力:-)