用ant编译junit测试类的问题

den*_*chr 3 java eclipse ant junit

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

我正在使用eclipse,junit测试类在通过eclipse执行时工作正常.这意味着使用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>
Run Code Online (Sandbox Code Playgroud)

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

[javac] C:\....\src\MyClassTest.java:3: package org.junit does not exist
cannot find symbol
Run Code Online (Sandbox Code Playgroud)

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

任何想法,真的很感激.问候

duf*_*ymo 6

是的,您必须指定CLASSPATH.

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

当你使用它来构建时,Ant必须知道CLASSPATH.看看他们的<path>东西.

我是这样做的:

    <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>
Run Code Online (Sandbox Code Playgroud)


Mar*_*pic 5

必须通过名称而不是目录来指定Jars.使用:

<javac srcdir="src/" classpath="pathtojar/junit.jar"/>
Run Code Online (Sandbox Code Playgroud)

其中"pathtojar"是包含junit jar的路径.