我正在试图弄清楚如何使用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.
我做错了什么?
答案 0 :(得分: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">