在蚂蚁中执行Junit测试-noclassdeffounderror错误名称

时间:2018-07-26 06:51:42

标签: junit ant javac build.xml

我正在尝试使用ant执行一些junit测试服。

这是我的文件夹结构

  • bin
  • lib
  • src
  • 测试
  • build.xml

首先,我在源位置中编译所有文件,然后在测试文件夹中的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>

2 个答案:

答案 0 :(得分:0)

您需要将测试名称设置为SetupSuite的full name

<test name="alltests.suites.SetupSuite"/>

答案 1 :(得分:0)

已解决。我不得不将hamcrest-core-1.3.jar文件添加到classpath