无法从 Ant 运行 Groovy 测试用例



我的Ant目标是这样的:

<target name="junit" depends="compile">
    <junit haltonfailure="true" printsummary="true">
        <classpath>
            <fileset dir="${idea.dir}/lib" includes="junit.jar" />
            <fileset dir="${build.dir}" includes="**" />
        </classpath>
        <formatter type="plain" usefile="true" />
        <batchtest fork="false" todir="${out.dir}">
            <fileset dir="${build.dir}" includes="test_*/*Test.class" />
        </batchtest>
    </junit>
</target>

项目中所有编译的类都在${build.dir}中,以及所有编译的测试用例。后者在${build.dir}/test_*子文件夹中。

有一个测试类${build.dir}/test_ecs/EntityManagerTest.class,明显存在于batchtest中。但是,Ant在junit报告中给了我这样的输出:

test_ecs.EntityManagerTest
java.lang.ClassNotFoundException: test_ecs.EntityManagerTest
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)

现在,我不明白的是:为什么找到了测试用例类文件,但然后错误确切地说没有找到类?

尝试这样修改<classpath>..部分:

<junit ..>
        <classpath>
            <pathelement location="${idea.dir}/lib/junit.jar"/>
            <pathelement path="${build.dir}"/>
        </classpath>

我怀疑你的问题是类路径声明:

<classpath>
    <fileset dir="${idea.dir}/lib" includes="junit.jar" />
    <fileset dir="${build.dir}" includes="**" />
</classpath>

你的*.class文件位于构建目录吗?还是构建目录的子目录?

作为例子,这是我的标准junit任务:

<junit printsummary="yes" haltonfailure="yes">
    <classpath>
        <path refid="test.path"/>
        <pathelement path="${build.dir}/classes"/>
        <pathelement path="${build.dir}/test-classes"/>
    </classpath>
    <formatter type="xml"/>
    <batchtest fork="yes" todir="${build.dir}/test-reports">
        <fileset dir="${test.src.dir}">
            <include name="**/*Test*.java"/>
            <exclude name="**/AllTests.java"/>
        </fileset>
    </batchtest>
</junit>

注意类路径声明。它包括第三方依赖jar的路径,我将类编译到的目录和我将测试类编译到的目录。

相关内容

  • 没有找到相关文章