2017-10-20 146 views
1

我正在嘗試創建一個與Travis CI配合使用的build.xml文件。配置build.xml以在單獨的/ test目錄中運行JUnit測試

這是代碼,我拿出這麼遠:

<?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,但是我得到的錯誤是不同的包不存在。

有什麼建議嗎?

+0

是否有你使用Ant而不是現代構建工具的原因? – chrylis

+0

@chrylis我剛開始探索CI的世界,而這只是我遇到的第一種方法。我很樂意聽到有關我可以檢查的替代工具,但如果我可以使用此方法,它仍然很好。 –

+0

@chrylis當你說「現代構建工具」時,你是指Gradle還是Maven? –

回答

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

相關問題