2009-07-16 112 views
3

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

我使用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> 

蚂蚁工作得很好,直到我在我的文件夹中添加MyClassTest.java(Junit的与注释)。输出是:

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

我的想法是,某种程度上Ant不能找到junit库。由于我没有指定类路径,因此我假设Ant会查找与源文件相同的位置以查找它需要的内容......如何告诉Ant,junit jar是否正确?

任何想法,真的很感激。 Regards

+0

您不必使用绝对路径,如您在您的评论一样。它可以是相对的,但它与ant的执行位置(或项目元素上的basedir属性)有关。并且不要以正斜杠开始路径,否则它会查看根目录并将其视为绝对路径。 – Yishai 2009-07-16 02:50:27

回答

5

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

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

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

+0

感谢Marco和Duffy。即使根据eclipse包资源管理器视图中的junit.jar在根项目名称下引用,我不得不直接通过其绝对位置指向jar。我的意思是classpath =“/ junit.jar”只是没有工作, 我不得不说classpath =“C:\ Users \ Desktop \ Work \ Eclipse \ plugins \ org.junit4_4.3.1 \ junit.jar” 再次感谢! – denchr 2009-07-16 01:20:39

6

是的,你必须指定一个CLASSPATH。

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

Ant在使用它构建时必须知道CLASSPATH。看看他们的<路径>的东西。

这里是我如何做到这一点:

<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

其实我没有任何运气,直到我使用每个Apache网站的fetch.xml来拉动jar依赖。那对我来说工作得很好。这是我做的:

  1. 在命令行我去了ant主目录。
  2. 我输入“ant -f fetch.xml -Ddest = system”(在Jail的lib目录中存储jar)
  3. 它不会运行,因为它希望我有maven-artifact-ant-2.0.4-dep。jar在ant/lib文件夹中。
  4. 我做了一个谷歌搜索这个罐子,发现它在jarfinder.com。
  5. 我下载了它,并把它放在蚂蚁库文件夹,因为这是它一直在寻找这个文件。 然后它将所有需要的文件都拉出来,然后我就被设置好了。
  6. 然后在命令行中,我回到我的工作区文件夹并重置到build.xml 蚂蚁-buildfile build.xml文件
  7. 我当时也蚂蚁干净,蚂蚁编译(建立成功)和蚂蚁运行,所有的工作 - 建立成功。

JUnit是建立在与Eclipse但ANT我尝试了几种解决方案,从Apache和蚂蚁的文档,但是这是对我工作。 (我在Windows 7) -Erik