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

 

评分:0

我来说两句

Open Toolbar