用ant编译junit测试类的问题

时间:2009-07-16 01:05:13

标签: java eclipse ant junit

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

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

我的文件夹结构是:

的src /代码/ MyClass.java 的src /代码/ MyClassTest.java

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

<target name="compile" >
  <javac srcdir="src/" />
</target>

Ant工作正常,直到我在我的文件夹中添加了MyClassTest.java(带注释的Junit)。输出是:

[javac] C:\....\src\MyClassTest.java:3: package org.junit does not exist
cannot find symbol

我的想法是,Ant无法找到junit库。由于我没有指定类路径,我假设Ant会查找与源文件相同的位置以查找它需要的内容...我怎么能告诉Ant junit jar就在那里?

任何想法,都非常感谢。 此致

4 个答案:

答案 0 :(得分:6)

是的,您必须指定CLASSPATH。

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

当您使用它来构建时,Ant必须知道CLASSPATH。看看他们的&lt;路径&gt;东西。

我是这样做的:

    <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>

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:1)

实际上,除非我使用每个apache网站的fetch.xml来提取jar依赖项,否则我没有任何运气。然后它对我来说很好。这就是我所做的:

  1. 在命令行上我去了ant主目录。
  2. 我输入了“ant -f fetch.xml -Ddest = system”(将jar存放在Ant的lib目录中)
  3. 它不会运行,因为它要我在ant / lib文件夹中有maven-artifact-ant-2.0.4-dep.jar。
  4. 我在google上搜索了这个jar,并在jarfinder.com上找到了它。
  5. 我下载了它并将其放在Ant Lib文件夹中,因为它正在寻找此文件。 然后它拉出了所需的所有文件,我就被设置了。
  6. 然后在命令行中我回到我的工作区文件夹并将其重置为build.xml ant -buildfile build.xml
  7. 然后我做了ant clean,ant compile(构建成功)和ant run并且全部工作 - Build Successful。
  8. JUnit内置于Eclipse但是使用ANT我尝试了几种来自apache和ant文档的解决方案,但这对我有用。 (我在Windows 7上) -Erik

答案 3 :(得分:0)

您需要定义一个类路径并将其与javac任务一起使用。

请参阅:http://ant.apache.org/manual/using.html了解一些基础知识。