2012-12-09 78 views
0

我在寫我的build.xml。但是,我的junit任務似乎出了問題。當我運行我的junit任務時。我可以建立成功,但junit報告只顯示運行1測試錯誤。但我有超過10個測試。所以我想知道是否有什麼東西與我的junit任務一起運行。這是我的代碼。我不知道我的螞蟻junit任務有什麼問題

<property name="src.dir" value="src"/> 
<property name="bin.dir" value="bin"/> 
<property name="dest.dir" value="dest"/> 
<property name="test.dir" value="test/> 
<property name="lib.dir" value="lib"/> 
<path id="classpath"> 
    <pathelement location="${lib.dir}/junit-4.11.jar"/> 
    <pathelement location="${lib.dir}/ant-junit4.jar"/> 
</path> 

<target name="test" depends="compile"> 
    <junit printsummary="yes" haltonfailure="no"> 
      <classpath> 
       <pathelement location="${bin.dir}"/> 
       <path refid="classpath"/> 
      </classpath> 
      <formatter type="plain" usefile="false"/> 
       <batchtest fork="yes"> 
        <fileset dir="${test.dir}" includes="*Test*.java"/> 
       </batchtest> 
      </junit> 
     </target> 

我不明白什麼是錯的,所以有人可以幫我嗎?

+0

也許你的JUN​​IT測試本身......這段代碼是什麼樣的? –

+0

除非所有測試都直接在test目錄下,否則在默認包中,您需要'**/* Test * .java' –

回答

1

發生了什麼?你有沒有收到任何錯誤信息?

您通常需要做到以下幾點:

  • 編譯您的正常碼。生成的*.class文件應放置在目錄中,如target/classesbuild/classes。使用<javac>任務的destdir參數來執行此操作。
  • 編譯你的JUnit測試。
    • 在你的classpath ,你需要所有你需要編譯正常
    • 您需要在您的正常類被編譯爲destdir參考的罐子。
    • 您需要JUnit jar。
    • 這些應該編譯成一個不同的目錄從你的普通罐子。通常,這是target/test-classesbuild/test-classes

一旦你編譯JUnit測試,你可以運行它們。你可以像你一樣使用<junit>任務。

  • 您需要確保該includeantruntime參數設置爲true
  • 您還應該設置forktrue
  • 編譯測試類時,您需要相同的類路徑(包含所有三個元素)。可能需要更多的罐子,但通常不需要。
  • 您運行的編譯 JUnit測試類文件(您保存到target/test-classesbuild/test-classes。在您的例子的那些,你想運行它們對源測試。

我對我的目錄佈局使用了Maven標準,這意味着我的Java源代碼位於src/main/java之下,而我的JUnit Java文件位於src/test/java之下,任何XML或屬性或其他非源文件都存儲在src/main/resources。編譯爲target/classes,而Junit資源編譯爲target/test-classes

這使得您可以輕鬆地分別編譯代碼和測試代碼,而無需擔心目錄編譯中的**/test/**,**/Test/**,**/JUnit/**異常,因爲所有內容都是分開的。

希望這會有所幫助。