Ant classpath和junit.jar

时间:2011-01-22 03:54:09

标签: java eclipse ant junit

我有一个build.xml,允许我运行junit测试。以下是相关部分:

<path id="JUnit 4.libraryclasspath">
    <pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>
    <pathelement location="../../../../../eclipse/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar"/>
</path>
<path id="MyProject.classpath">
    <pathelement location="bin"/>
    <path refid="JUnit 4.libraryclasspath"/>
</path>

<target name="run_unit_tests" depends="build">
        <mkdir dir="${junit.output.dir}"/>
        <junit printsummary="yes" haltonfailure="no">   
            <classpath refid="MyProject.classpath" />

            <formatter type="xml"/>
            <batchtest todir="${junit.output.dir}">
                    <fileset dir="${src}">
                            <include name="**/*Test*.java"/>
                    </fileset>
            </batchtest>
        </junit>
</target>

如果我更换线路:

<pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>

<pathelement location="${eclipse.home}/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>

更改会破坏类路径。我收到以下错误:

  

<classpath>的{​​{1}}必须   包括junit.jar,如果不是在Ant自己的   类路径

据我所知,location属性在两种情况下应保持相同的值。那可能是什么原因?

作为一个附带问题,此构建文件不适用于具有不同junit版本的环境(路径将中断)。是否可以为junit.jar添加“常规”路径?

2 个答案:

答案 0 :(得分:24)

JUnit库驻留在您告诉它驻留的任何地方。就个人而言,我完全忘记了链接Eclipse附带的jar文件而不是download the jars directly

如果我有一个项目,请在路径/project说,然后我会尝试将依赖项放在该层次结构中的某个位置,例如/project/test/lib/junit.jar。如果我的ant构建文件是/project/build.xml,那么就像将./test/lib/junit.jar添加到JUnit类路径一样简单。尝试引用计算机上的任意位置是脆弱的(请记住,Eclipse可以在任何地方安装),特别是在使用相对路径时(因为您的项目内容可以存储< EM>任何地方)。

答案 1 :(得分:4)

如果你在Linux上,你可以随时将你的jar符号链接到另一个位置。这样,您可以将其符号链接到不包含版本的路径。例如:

 ln -s plugins/org.junit4_4.5.0.v20090824/junit.jar /wherever/junit.jar

您可能希望在eclipse子目录之外有一个库文件夹。您还可以考虑使用ivy或maven来管理您的依赖项。

我不确定为什么上面的示例失败,但错误消息暗示找不到junit.jar。你确定设置了eclipse.home吗?你可以回复它:

 <echo message="${eclipse.home}">