配置build.xml以在单独的/ test目录中运行JUnit测试

时间:2017-10-20 17:23:05

标签: java xml junit travis-ci build.xml

我正在尝试创建一个与Travis CI一起使用的build.xml文件。

这是我到目前为止提出的代码:

<?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测试文件放在与类文件相同的目录中,就像在下面显示的文件结构中一样,上面的build.xml工作,并且JUnit测试正常运行:

- src
  - folder1
    - MyClass1.java
    - MyClass1Test.java

但是,我将测试文件放在一个单独的/ test目录中,结构如下所示:

- src
  - folder1
    - MyClass1.java
- test
  - folder1
    - MyClass1Test.java

我似乎无法弄清楚我需要更改以从/ test文件夹运行测试。我尝试更改不同位置的src.dir位置以指向test而不是src,但我会收到不存在不同包的错误。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以/应该/必须定义另一个编译测试源的目标:

<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