蚂蚁类路径和 junit.jar

2022-09-03 05:25:46

我有一个构建.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"/>

此更改会中断类路径。我收到以下错误:

for 必须包含 junit.jar如果不在 Ant 自己的类路径中<classpath><junit>

据我所知,在这两种情况下,location 属性应该具有相同的值。那么原因是什么呢?

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


答案 1

JUnit 库位于您告诉它驻留的任何位置。就我个人而言,我会完全忘记链接到Eclipse附带的jar文件,而是直接下载jar。

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


答案 2

如果你在linux上,你总是可以把你的jar链接到另一个位置。通过这种方式,您可以将其符号链接到不包含该版本的路径。例如:

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

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

我不确定为什么上面的示例失败,但错误消息暗示找不到junit.jar。你确定eclipse.home已经设置好了吗?你可以用以下语言来呼应它:

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

推荐