0

我试图弄清楚如何使用 ant 建立一个项目。出于某种原因,我无法运行 junit 测试。我使用 ant 建立了一个简单的虚拟项目来尝试解决这个问题。它所拥有的只是一个应该可以轻松通过的单元测试。

我的项目结构是这样的。

.
|-- build.xml
|-- src
`-- test
    |-- foo
    |   `-- MainTest.java
    `-- junit-4.10.jar

MainTest.java看起来像这样。

package foo;

import org.junit.*;
import static org.junit.Assert.*;

public class MainTest {
    @Test
    public void passes() {
        System.out.println("It works!");
    }
}

这里是 build.xml。

<project name="Nes" default="build" basedir=".">
    <target name="build-test">
        <javac srcdir="test">
            <classpath>
                <pathelement location="test/junit-4.10.jar" />
            </classpath>
        </javac>
    </target>

    <target name="test" depends="build-test">
        <junit>
            <classpath>
                <pathelement location="test/junit-4.10.jar" />
            </classpath>
            <batchtest>
                <fileset dir="test" includes="foo/MainTest.class" />
            </batchtest>
        </junit>
    </target>
</project>

这是我从运行中得到的输出ant test

Buildfile: /home/hayden/dev/nes/build.xml

build-test:
    [javac] /home/hayden/dev/nes/build.xml:4: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

test:
    [junit] Test foo.MainTest FAILED

BUILD SUCCESSFUL
Total time: 0 seconds

我正在运行 ant 1.8.2 和 Java 6。

我究竟做错了什么?

4

1 回答 1

0

您需要添加实际.class文件的路径,以便 JUnit 可以实际运行测试。由于您完全限定了测试类名称,因此您需要包含包含foo包的目录:

<target name="test" depends="build-test">
    <junit>
        <classpath>
            <pathelement location="test/junit-4.10.jar" />
            <pathelement location="test" />
        </classpath>

但我建议您将javac任务更改为不将构建工件(即.class文件)输出到与源文件相同的目录中。创建一个顶级“构建”目录并将所有构建输出放在那里。

您还应该通过向任务添加includeantruntime属性来消除第一个警告javac

    <javac srcdir="test" includeantruntime="false">
于 2012-05-27T19:26:34.400 回答