我有这个,工作正常:
<target name="runjunit">
<junit>
<classpath>
<pathelement path="${build}"/>
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</classpath>
<test name="com.xyzcompany.abcproject.test.junit.CalculatorTest"/>
<formatter type="brief" usefile="false"/>
</junit>
</target>
然而,我有多项测试。所以我这样做:
<target name="runjunit">
<junit>
<classpath>
<pathelement path="${build}"/> <---- this doesn't seem to work anymore
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</classpath>
<batchtest>
<fileset dir="com/xyzcompany/abcproject/test/junit">
<include name="**/*.*"/>
</fileset>
</batchtest>
<formatter type="brief" usefile="false"/>
</junit>
</target>
然而,这告诉我目录不存在:
C:UsersmeDesktoprepositorymainprojtrunkcomxyzcompanyabcprojecttestjunit does not exist.
以上应为:
C:UsersmeDesktoprepositorymainprojtrunkbuildcomxyzcompanyabcprojecttestjunit
正如您所看到的,类路径中的pathelement会在单个测试中设置trunk/build.com,但在批测试中不会。
为保护隐私,对目录和包名称进行了模糊处理。
知道我如何更改批测试以使类路径中的pathelement真正起作用吗?谢谢
编辑:
这不起作用:
<batchtest>
<fileset dir="${build}/com/xyzcompany/abcproject/test/junit">
<include name="**/*.*" />
</fileset>
</batchtest>
它给了我:
java.lang.ClassNotFoundException: CalculatorTest
将它设置为<fileset dir="${build}/com/xyzcompany/abcproject/test/junit">
没有任何意义,因为类不知道它正在构建中。因此,设置类路径是正确的选项,但对<batchtest>
不起作用。
编辑2:
现在我真的想了想,做<fileset dir="${build}/com/xyzcompany/abcproject/test/junit">
确实有意义。但是,当它为junit
启动java
时,它不会从${build}
类路径运行junit。
编辑3:
<batchtest>
<fileset dir="${build}">
<include name="com/xyzcopmany/abcproject/test/junit/*"/>
</fileset>
</batchtest>
最后的答案。Ant确实应该有更好的文档。这是一个复杂的产品。。。
设置
<fileset dir="com/xyzcompany/abcproject/test/junit">
至
<batchtest>
<fileset dir="${buildTests}">
<include name="**/*Test*.class"/>
</fileset>
</batchtest>
不要在${buildTests}中包含com/xyzcompany/abcproject/test/junit部分。
如果你想从${build}
目录中提取用于批量测试的文件,你应该告诉
<batchtest>
<fileset dir="${build}/com/xyzcompany/abcproject/test/junit">
<include name="**/*"/>
</fileset>
</batchtest>