2013-01-11 17 views
0

我有一個使用JUnit進行單元測試的項目。問題是,當我嘗試從Eclipse編譯和運行我的項目時,一切都很好,但是當我嘗試使用Ant進行編譯時,出現大量錯誤,它無法從JUnit識別任何函數(如test())。我在項目文件夾中複製了junit.jar,我的類路徑是「./」,但它仍然不起作用。任何人都知道我應該怎麼做才能完成這件事?如何讓ant識別項目庫中的junit.jar

+0

您可能需要添加build.xml文件,因爲你可能有類路徑問題。 –

+0

無法幫助您瞭解有關項目構建文件的更多信息 –

回答

1

當編譯測試代碼時,您需要確保JUnit Jar包含在您的類路徑中。您還需要所有其他依賴項,以及您之前編譯的類的類路徑。

說你這是怎麼編的常規代碼:

<property name="main.lib.dir" value="???"/> 
<property name="junit.jar"  value="???"/> 

<target name="compile" 
    description="Compile my regular code"> 
    <javac srcdir="${main.srcdir}" 
     destdir="${main.destir}"> 
     <classpath path="${main.lib.dir}"/> 
    </javac> 

通知我有我的,包含所有我的代碼是取決於罐子的目錄。這是${main.lib.dir}。請注意,我的課程編譯爲${main.destdir}。另外請注意,我有一個屬性指向${junit.jar}中的實際JUnit jar。我還沒有使用那個。

我們編譯我的測試類:

<target name="test-compile" 
    description="Compile my JUnit tests"> 
    <javac srcdir="${test.srcdir}" 
     destdir="${test.destdir}"> 
     <classpath path="${main.lib.dir}"/> 
     <classpath path="${main.destdir}"/> 
     <classpath path="${junit.jar}"/> 
    </javac> 

注意,現在有三個項目在我的類路徑:

  1. 我的編譯代碼倚重罐子。
  2. 我編譯了我的非測試Java代碼的目錄
  3. 而JUnit jar本身。

您編譯測試claasses後,您現在可以使用<junit>任務運行測試:

<junit fork="true" 
    includeantruntime="true"> 
    <formatter .../> 
    <batchtest todir="${test.output.dir}"/> 
    <classpath="${test.destdir}"/> 
</junit>