好吧,我很沮丧! 我猎杀绕了好几个小时,现在还在难倒。
环境:WinXP中,Eclipse的伽利略3.5(直安装 - 没有额外的插件)。
所以,我有一个简单的JUnit测试。 它运行良好,从它的内部的Eclipse JUnit的运行配置。 这个类有任何东西没有依赖关系。 要缩小这一问题下尽可能它只包含:
@Test
public void testX() {
assertEquals("1", new Integer(1).toString());
}
无汗至今。 现在,我想借此从内部运行Ant的这种测试案例的超高级步骤(最终目标是与哈德逊集成)。
所以,我创建了一个build.xml文件:
<project name="Test" default="basic">
<property name="default.target.dir" value="${basedir}/target" />
<property name="test.report.dir" value="${default.target.dir}/test-reports" />
<target name="basic">
<mkdir dir="${test.report.dir}" />
<junit fork="true" printSummary="true" showOutput="true">
<formatter type="plain" />
<classpath>
<pathelement path="${basedir}/bin "/>
</classpath>
<batchtest fork="true" todir="${test.report.dir}" >
<fileset dir="${basedir}/bin">
<include name="**/*Test.*" />
</fileset>
</batchtest>
</junit>
</target>
</project>
$ {BASEDIR}是包含源,类和构建文件工作区中的Java项目名称。 所有的.java的和build.xml文件在$ {BASEDIR} / src目录。 .class文件是在$ {BASEDIR} / bin中。
我已经通过Windows /首选项/ ANT /运行/供稿条目加入Eclipse的安装目录/插件/ org.junit4_4.5.0.v20090423 /的junit.jar到Ant的运行时类路径。 蚂蚁的junit.jar是在Ant主项。
所以,当我运行这个疯狂复杂的目标会发生什么? 我的报告文件中包含:
Testsuite: com.xyz.test.RussianTest
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
Testcase: initializationError took 0 sec
Caused an ERROR
org/hamcrest/SelfDescribing
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
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.loadClassInternal(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
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.loadClassInternal(Unknown Source)
这是什么org.hamcrest.SelfDescribing类? 事做嘲笑? 好的。 但是,为什么依赖? 我没有做任何事情与它在所有。 这实际上是一种Java项目比其他的JUnit没有依赖关系。
难倒(和沮丧)!!