jUnit测试在Eclipse中工作,但是当我通过ant运行它们时失败

时间:2011-08-10 03:09:29

标签: java eclipse ant junit

我在ant中有以下任务:

<target name="init-junit" depends="init">
    <mkdir dir="${junit.reports.individual}" />
    <property name="running-junit" value="true" />
</target>

<target name="run-tests" depends="init-junit, compile">
    <junit>
        <classpath refid="classpath" />
        <formatter type="xml" />
        <batchtest todir="${junit.reports.individual}">
            <fileset dir="${dir.build}" includes="**/*Test*" />
        </batchtest>
    </junit>
</target>

<target name="compile-reports" depends="run-tests">
    <junitreport todir="${junit.reports}" tofile="junit-report.xml">
        <fileset dir="${junit.reports.individual}" />
        <report format="frames" todir="${junit.reports}/html" />
    </junitreport>
</target>

${dir.build}是包含所有.class个文件的目录。当我在eclipse中运行它们时,jUnit测试工作,但是当我通过ant(通过eclipse或终端运行)运行它们时失败;他们每个都抛出以下异常:

org.fscit.{name of class}
    java.lang.ClassNotFoundException: org.fscit.{name of class}
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)

我的junit-4.8.2.jar文件夹中有lib,该文件夹位于带有id classpath的类路径中,我的项目根目录中有build.xml,其basedir 1}}属性设置为.。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

您需要在类路径中拥有类的目标目录。你的classpath元素应该有${dir.build}

<path id="classpath">
<pathelement location="${dir.build}"/>

答案 1 :(得分:0)

使用pathelement任务

<pathelement location="${dir.build}" /> 

而不是文件集任务

<fileset dir="${dir.build}" />

它适用于我(蚂蚁版本是1.7.1)