如何使ant识别项目存储库中的junit.jar

时间:2013-01-11 15:46:01

标签: ant junit compilation classpath

我有一个使用JUnit进行单元测试的项目。问题是当我尝试从Eclipse编译和运行我的项目时,一切都很好,但是当我尝试使用Ant编译时,我遇到了大量错误,它无法识别JUnit中的任何函数(如test() )。我在项目文件夹中复制了junit.jar,我的类路径是“./”,但它仍然不起作用。任何人都知道我应该怎样做才能完成这项工作?

1 个答案:

答案 0 :(得分:1)

编译测试代码时,需要确保JUnit jar在您的类路径中。您还需要所有其他依赖项,以及您之前编译的类的类路径。

说这是你编译常规代码的方式:

<property name="main.lib.dir"   value="???"/>
<property name="junit.jar"      value="???"/>

<target name="compile"
    description="Compile my regular code">
    <javac srcdir="${main.srcdir}"
        destdir="${main.destir}">
        <classpath path="${main.lib.dir}"/>
    </javac>

注意我的目录中包含了我的代码所依赖的所有jar。这是${main.lib.dir}。请注意,我的类被编译为${main.destdir}。另请注意,我有一个属性指向${junit.jar}中的实际JUnit jar。我还没有使用那个。

现在编译我的测试类:

<target name="test-compile"
    description="Compile my JUnit tests">
    <javac srcdir="${test.srcdir}"
        destdir="${test.destdir}">
        <classpath path="${main.lib.dir}"/>
        <classpath path="${main.destdir}"/>
        <classpath path="${junit.jar}"/>
    </javac>

请注意,我的类路径中现在有三个项目:

  1. 我编译的代码所依赖的罐子。
  2. 我编译非测试Java代码的目录
  3. JUnit jar本身。
  4. 编译测试签名后,您现在可以使用<junit>任务来运行测试:

    <junit fork="true"
        includeantruntime="true">
        <formatter .../>
        <batchtest todir="${test.output.dir}"/>
        <classpath="${test.destdir}"/>
    </junit>