Java 使用ant编译junit测试类时出现问题

Java 使用ant编译junit测试类时出现问题,java,eclipse,ant,junit,Java,Eclipse,Ant,Junit,我在将junit与工作的ant build.xml文件集成时遇到问题。我的测试类与源类位于同一目录中。在学习如何使用ant时,我只想编译所有源代码和测试类 我使用的是eclipse,当通过eclipse执行时,junit测试类可以很好地工作。这意味着使用junit.jar和ant-junit-1.7.0.jar正确地设置了类路径(至少从eclipse的角度来看是这样),尽管我不确定后一个jar是否绝对必要 我的文件夹结构是: src/code/MyClass.java src/code/MyCl

我在将junit与工作的ant build.xml文件集成时遇到问题。我的测试类与源类位于同一目录中。在学习如何使用ant时,我只想编译所有源代码和测试类

我使用的是eclipse,当通过eclipse执行时,junit测试类可以很好地工作。这意味着使用junit.jar和ant-junit-1.7.0.jar正确地设置了类路径(至少从eclipse的角度来看是这样),尽管我不确定后一个jar是否绝对必要

我的文件夹结构是:

src/code/MyClass.java src/code/MyClassTest.java

ant文件只包含一个目标,为了编译MyClass和MyClassTest,我目前不包含任何junit任务,也不介意将构建文件放在同一目录中:

<target name="compile" >
  <javac srcdir="src/" />
</target>
我的想法是,不知何故Ant找不到junit库。因为我没有指定类路径,所以我假设Ant会查看与源文件相同的位置,以找到它需要的内容……我如何告诉Ant junit JAR就在那里

任何想法,我们都非常感激。
关于

您需要定义一个类路径并将其用于javac任务


请参阅:了解一些基本信息。

是的,您必须指定类路径

自从我上次使用Eclipse已经有很长时间了,但我相信您必须右键单击项目根,选择“属性”,然后将JUnit JAR添加到类路径中

当您使用Ant进行构建时,它必须知道类路径。看看他们的东西

我是这样做的:

    <path id="production.class.path">
        <pathelement location="${production.classes}"/>
        <pathelement location="${production.resources}"/>
        <fileset dir="${production.lib}">
            <include name="**/*.jar"/>
            <exclude name="**/junit*.jar"/>
            <exclude name="**/*test*.jar"/>
        </fileset>
    </path>

    <path id="test.class.path">
        <path refid="production.class.path"/>
        <pathelement location="${test.classes}"/>
        <pathelement location="${test.resources}"/>
        <fileset dir="${test.lib}">
            <include name="**/junit*.jar"/>
            <include name="**/*test*.jar"/>
        </fileset>
    </path>

必须按名称而不是目录指定JAR。使用:

<javac srcdir="src/" classpath="pathtojar/junit.jar"/>


其中“pathtojar”是包含junit jar的路径。

事实上,直到我在apache网站上使用fetch.xml来提取jar依赖项之前,我一直运气不佳。那对我来说很好。这就是我所做的:

  • 在命令行上,我转到ant主目录
  • 我键入了“ant-fetch.xml-Ddest=system”(将JAR存储在ant的lib目录中)
  • 它不会运行,因为它希望我在ant/lib文件夹中有maven-artifact-ant-2.0.4-dep.jar
  • 我在谷歌上搜索了这个罐子,在jarfinder.com上找到了它
  • 我下载了它并把它放在Ant-Lib文件夹中,因为它在那里寻找这个文件。 然后它提取了所有需要的文件,我就准备好了
  • 然后在命令行中,我返回到我的工作区文件夹,并将其重置为build.xml ant-buildfile build.xml
  • 然后我进行了ant清理、ant编译(构建成功)和ant运行,所有工作都成功构建
  • JUnit是Eclipse内置的,但对于ANT,我尝试了apache和ANT文档中的几种解决方案,但这对我来说是有效的。 (我在Windows 7上)
    -埃里克

    谢谢马可和达菲。尽管根据eclipse package explorer视图,junit.jar被引用在根项目名称的正下方,但我必须通过它的绝对位置直接指向jar。。我的意思是classpath=“/junit.jar”只是不起作用,我不得不说classpath=“C:\Users\Desktop\work\Eclipse\plugins\org.junit4\u 4.3.1\junit.jar”再次感谢!你不必像在评论中那样使用绝对路径。它可以是相对的,但它与ant的执行位置(或项目元素上的basedir属性)相关。不要用正斜杠开始路径,否则它会查看根并将其视为绝对路径。
    <javac srcdir="src/" classpath="pathtojar/junit.jar"/>