在单独的 /test 目录中配置 build.xml 到 运行 JUnit 测试
Configure build.xml to run JUnit tests in separate /test directory
我正在尝试创建一个 build.xml 文件以用于 Travis CI。
这是我到目前为止想出的代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Practice" basedir="." default="init">
<property name="src.dir" location="src" />
<property name="bin.dir" location="bin" />
<property name="lib.dir" location="lib" />
<path id="classpath">
<pathelement location="${bin.dir}" />
<pathelement location="${lib.dir}/hamcrest-core-1.3.jar" />
<pathelement location="${lib.dir}/junit-4.11.jar" />
</path>
<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="init" depends="clean">
<mkdir dir="${bin.dir}" />
<copy includeemptydirs="false" todir="${bin.dir}">
<fileset dir="${src.dir}">
<exclude name="**/*.launch" />
<exclude name="**/*.java" />
</fileset>
</copy>
</target>
<target name="compile" depends="init" description="compile">
<javac srcdir="${src.dir}" destdir="${bin.dir}" classpathref="classpath" />
</target>
<target name="test" depends="compile">
<mkdir dir="${report.dir}" />
<junit printsummary="yes">
<classpath>
<path refid="classpath" />
</classpath>
<formatter type="xml" />
<test name="folder1.MyClass1Test" todir="${report.dir}" haltonfailure="yes" />
</junit>
</target>
</project>
如果我将我的 JUnit 测试文件放在与 class 文件相同的目录中,如下所示的文件结构,上面的 build.xml 有效,而 JUnit 测试 运行正确:
- src
- folder1
- MyClass1.java
- MyClass1Test.java
但是,我将测试文件放在单独的 /test 目录中,结构如下所示:
- src
- folder1
- MyClass1.java
- test
- folder1
- MyClass1Test.java
我似乎无法弄清楚我需要更改什么才能将测试从 /test 文件夹获取到 运行。我尝试更改不同位置的 src.dir
位置以指向 test
而不是 src
,但我随后收到错误消息,指出不同的包不存在。
有什么建议吗?
您 can/should/must 定义另一个编译测试源的目标:
<target name="compileTest" depends="compile" description="compileTest">
<javac srcdir="${test-src.dir}" destdir="${bin.dir}" classpathref="classpath" />
</target>
你的测试目标就变成了
<target name="test" depends="compileTest">
...
</target>
确保添加额外的 属性 test-src.dir
。
我正在尝试创建一个 build.xml 文件以用于 Travis CI。
这是我到目前为止想出的代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Practice" basedir="." default="init">
<property name="src.dir" location="src" />
<property name="bin.dir" location="bin" />
<property name="lib.dir" location="lib" />
<path id="classpath">
<pathelement location="${bin.dir}" />
<pathelement location="${lib.dir}/hamcrest-core-1.3.jar" />
<pathelement location="${lib.dir}/junit-4.11.jar" />
</path>
<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="init" depends="clean">
<mkdir dir="${bin.dir}" />
<copy includeemptydirs="false" todir="${bin.dir}">
<fileset dir="${src.dir}">
<exclude name="**/*.launch" />
<exclude name="**/*.java" />
</fileset>
</copy>
</target>
<target name="compile" depends="init" description="compile">
<javac srcdir="${src.dir}" destdir="${bin.dir}" classpathref="classpath" />
</target>
<target name="test" depends="compile">
<mkdir dir="${report.dir}" />
<junit printsummary="yes">
<classpath>
<path refid="classpath" />
</classpath>
<formatter type="xml" />
<test name="folder1.MyClass1Test" todir="${report.dir}" haltonfailure="yes" />
</junit>
</target>
</project>
如果我将我的 JUnit 测试文件放在与 class 文件相同的目录中,如下所示的文件结构,上面的 build.xml 有效,而 JUnit 测试 运行正确:
- src
- folder1
- MyClass1.java
- MyClass1Test.java
但是,我将测试文件放在单独的 /test 目录中,结构如下所示:
- src
- folder1
- MyClass1.java
- test
- folder1
- MyClass1Test.java
我似乎无法弄清楚我需要更改什么才能将测试从 /test 文件夹获取到 运行。我尝试更改不同位置的 src.dir
位置以指向 test
而不是 src
,但我随后收到错误消息,指出不同的包不存在。
有什么建议吗?
您 can/should/must 定义另一个编译测试源的目标:
<target name="compileTest" depends="compile" description="compileTest">
<javac srcdir="${test-src.dir}" destdir="${bin.dir}" classpathref="classpath" />
</target>
你的测试目标就变成了
<target name="test" depends="compileTest">
...
</target>
确保添加额外的 属性 test-src.dir
。