我遇到了将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就在那里?
任何想法,都非常感谢。 此致
答案 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依赖项,否则我没有任何运气。然后它对我来说很好。这就是我所做的:
答案 3 :(得分:0)
您需要定义一个类路径并将其与javac任务一起使用。
请参阅:http://ant.apache.org/manual/using.html了解一些基础知识。