我正在尝试使用ant执行一些junit测试服。
这是我的文件夹结构
首先,我在源位置中编译所有文件,然后在测试文件夹中的java文件中编译。
测试文件夹的整体结构(已编译的.class文件)保存在内部看起来像这样的bin文件夹中。
bin-test-alltests | -suites-SetupSuite.class -StartSuite.class
allTests 文件夹中的是在 suites 文件夹中的套件中使用的测试
我正在尝试启动这些套件,但是不断出现错误:
ant junit java.lang.noclassdeffounderror错误名称
我很确定类路径有问题,但是我不知道是什么。我试图更改
<test name="SetupSuite"/>
<test name="SetupSuite.class"/>
我又遇到另一个错误:
java.lang.ClassNotFoundException:SetupSuite.class
这是我的build.xml文件
<project name="MyTest" basedir=".">
<!--Common properties -->
<property name="src.dirname" value="src" />
<property name="test.dirname" value="test" />
<property name="lib.dirname" value="lib" />
<property name="bin.dirname" value="bin" />
<property name="src.encoding" value="utf8" />
<property name="src.version" value="1.7" />
<property environment="env" />
<!-- Paths for MyTest -->
<property name="MyTest.dir" value="${basedir}" />
<property name="MyTest.src.dir" value="${MyTest.dir}\${src.dirname}" />
<property name="MyTest.test.dir" value="${MyTest.dir}\${test.dirname}" />
<property name="MyTest.dest.dir" value="${MyTest.dir}\${bin.dirname}" />
<property name="MyTest.lib.dir" value="${MyTest.dir}\${lib.dirname}" />
<path id="classpath">
<pathelement location="${MyTest.lib.dir}\junit.jar" />
<pathelement location="${MyTest.test.dir}\test\suites\" />
</path>
<target name="compile-MyTest-src" >
<myjavac srcdir="${MyTest.src.dir}" destdir="${MyTest.dest.dir}" classpath="{MyTest.lib.dir}\junit.jar"/>
</target>
<target name="compile-MyTest-test" depends="compile-MyTest-src">
<path id='libs'>
<fileset dir= "${MyTest.lib.dir}\" includes="**/*.jar"/>
</path>
<myjavac srcdir="${MyTest.test.dir}\" destdir="${MyTest.dest.dir}" classpathref = 'libs'/>
</target>
<target name="execute-tests" depends="compile-MyTest-src,compile-MyTest-test">
<junit printsummary="yes" haltonfailure="no" showoutput="yes">
<formatter type = "brief" usefile = "false" />
<classpath refid="classpath" />
<test name="SetupSuite"/>
</junit>
</target>
<!-- General compiler settings -->
<presetdef name="myjavac">
<javac classpathref="classpath" debug="on" includeantruntime="false" encoding="${src.encoding}" source="${src.version}" target="${src.version}" />
</presetdef>
</project>
答案 0 :(得分:0)
您需要将测试名称设置为SetupSuite的full name:
<test name="alltests.suites.SetupSuite"/>
答案 1 :(得分:0)
已解决。我不得不将hamcrest-core-1.3.jar文件添加到classpath