eclipse+ant+junit问题二
上一篇 /
下一篇 2009-03-10 17:00:52
/ 个人分类:Ant
参考文章:http://dohkoos.name/eclipse-environment-combining-ant-automatically-junit-tests-bis.html
执行<junit>这个task时,出现错误如下时:
java.lang.ClassNotFoundException: TestCore
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
出现原因:
Ant 不会去加载TestCore。而只是加载了junit库,junit再去加载TestCore,由于java 加载采用的是delegation 模式,而且junit 和TestCore不在同一个空间,所以junit 会调用parent 的classLoader 来加载
库,结果就出现上面的ClassNotFoundException 提示信息
解决方法:
(1)要写classpath,且classpath中要包含batchtest的目录路径,即${classes}
<path id="classpath">
<pathelement location="${classes}" />
……
</path>
(2)junit这个task中,指明classpath
<junit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
<classpath refid="classpath" />
<formatter type="xml" />
<batchtest todir="${report.dir}" >
<fileset dir="${classes}">
<include name="**/TestCore.class"/>
</fileset>
</batchtest>
</junit>
收藏
举报
TAG:
ant
Ant
eclipse
JUnit
junit