2011-08-02 49 views
2

我有以下Ant構建:製作JUnit的輸出信息,並編譯成/ build文件夾

<?xml version="1.0"?>  
<!-- the value of the default attr must be one of the targets. --> 
<project name="Money" default="build-source" basedir=".">   
    <description>The Money project build file.</description> 
    <property name="src" location="."/> 
    <property name="build" location="build"/> 
    <property name="junit" location="lib/junit-4.9b3.jar"/> 

    <path id="_classpath"> 
     <pathelement path="${junit}"/> 
     <pathelement path="${build}"/> 
    </path> 

    <target name="prepare"> 
     <mkdir dir="${build}"/> 
    </target> 

    <target name="build-source" depends="prepare" 
      description="compile the source "> 
     <javac srcdir="${src}" destdir="${build}"> 
      <classpath refid="_classpath"/> 
     </javac> 
    </target> 

    <target name="run" depends="build-source"> 
     <junit printsummary="on" showoutput="on"> 
      <test name="money.MoneyTest"/> 
      <classpath refid="_classpath"/> 
     </junit> 
    </target> 
</project> 

這是非常基本的 - 我只是試圖讓這件事情才能正常運行。我沒有得到的是:1)爲什麼它將編譯後的文件輸出到/ build/money目錄?我想輸出目錄是剛剛/建造,給這個目錄結構爲我的文件:

build/ 
build.xml 
lib/ 
src/ 
test/ 

2)當有未通過測試,它說:「測試money.MoneyTest失敗」。我希望它輸出有關故障,預期/實際值,行號等的信息。

我無法通過盯着上面的構建文件來了解這一點。有什麼建議?

+0

PS。上面的這些目錄(和build.xml)都在新行當然,所以它們都在同一層次 – Vahagn

+1

當發佈到SO,如果你縮進代碼 - 或任何 - 由4個空格它會出現格式化爲您鍵入它。您可以使用Markdown編輯器欄中的大括號{}按鈕來執行相同的操作。 –

回答

2
  1. 它輸出build下的編譯文件,創建一個與包的佈局相對應的目錄結構。

    由於您將課程放在money包中,因此輸出將在build/money之下。如果您將課程放在org.example.foo包下,則您的輸出將位於build/org/example/foo目錄中。

    要讓您的.class文件在build中,您必須使用默認包。

    編輯 我假設你的源文件有package money;聲明,如:

    package money; 
    
    public class MoneyTest { 
    ... 
    } 
    
  2. 如果添加了<formatter>元素,關於測試失敗的詳細報告將被寫入到輸出文件(默認,名爲TEST-名稱)。另見Ant Junit Task Documentation

    <junit printsummary="withOutAndErr" showoutput="on"> 
        <formatter type="plain"/> 
        <test name="money.MoneyTest"/> 
        <classpath refid="_classpath"/> 
    </junit> 
    

    我還沒有找到一種方法將失敗的測試報告直接打印到標準輸出。

+0

感謝您花時間回答,但我仍然不理解'金錢'套餐交易。我沒有「錢」包 - 只有名爲Money的文件夾具有上述文件夾結構。你說要讓我的類在構建中,我必須使用默認包,那個包是什麼?謝謝。 – Vahagn

+0

.java文件所在的文件夾必須與.java文件頂部的'package'聲明匹配。見編輯的答案。另請參閱此問題:http://stackoverflow.com/questions/1088509/what-is-the-purpose-of-defining-a-package-in-java-file –

相關問題