我的Ant目标如下所示:
<target name="junit" depends="compile">
<junit haltonfailure="true" printsummary="true">
<classpath>
<fileset dir="${idea.dir}/lib" includes="junit.jar" />
<fileset dir="${build.dir}" includes="**" />
</classpath>
<formatter type="plain" usefile="true" />
<batchtest fork="false" todir="${out.dir}">
<fileset dir="${build.dir}" includes="test_*/*Test.class" />
</batchtest>
</junit>
</target>
项目中的所有已编译类都在${build.dir}
中,以及所有已编译的测试用例。后者位于${build.dir}/test_*
个子文件夹中。
有一个测试类${build.dir}/test_ecs/EntityManagerTest.class
,显然可以在batchtest
中找到。但是,Ant在junit报告中给出了这个输出:
test_ecs.EntityManagerTest
java.lang.ClassNotFoundException: test_ecs.EntityManagerTest
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)
现在,我不明白的是:为什么找到了测试用例类文件,但是错误确实说明找不到该类?
答案 0 :(得分:0)
尝试像这样修改<classpath>..
部分:
<junit ..>
<classpath>
<pathelement location="${idea.dir}/lib/junit.jar"/>
<pathelement path="${build.dir}"/>
</classpath>
看看它是否运行......
答案 1 :(得分:0)
我怀疑你的问题是类路径声明:
<classpath>
<fileset dir="${idea.dir}/lib" includes="junit.jar" />
<fileset dir="${build.dir}" includes="**" />
</classpath>
您的* .class文件是否位于构建目录中?或者构建目录的子目录?
举例来说,这是我的标准junit任务:
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<path refid="test.path"/>
<pathelement path="${build.dir}/classes"/>
<pathelement path="${build.dir}/test-classes"/>
</classpath>
<formatter type="xml"/>
<batchtest fork="yes" todir="${build.dir}/test-reports">
<fileset dir="${test.src.dir}">
<include name="**/*Test*.java"/>
<exclude name="**/AllTests.java"/>
</fileset>
</batchtest>
</junit>
请注意类路径声明。它包括第三方依赖项jar的路径,我编译类的目录以及我编译测试类的目录。