2012-03-19 172 views
5

我想從我的ant build.xml文件運行Junit測試。我讀here,您可以使用junit.jar文件而不是使用位於ant.home/lib目錄中的.jar文件。這是我想要做的,因爲我們的Jenkins autobuild設置在他的ant lib目錄中沒有junit.jar文件。Junit螞蟻任務 - 找不到JUnitTask

即使有最簡單的項目,我總是得到這個錯誤,沒有找到JUnitTask。如果你看看我的build.xml文件,它明確包含並用於junit任務。

的build.xml:

<project default="all"> 
    <property name="TALK" value="false" /> 

    <path id="classpath.base"> 
    </path> 
    <path id="classpath.test"> 
     <fileset dir="." includes="**/*.jar" /> 
    </path> 

    <target name="compile-test"> 
     <javac srcdir="src" verbose="${TALK}"> 
      <classpath refid="classpath.test" /> 
     </javac> 
    </target> 

    <target name="test" depends="compile-test"> 
     <junit> 
      <classpath refid="classpath.test" /> 
      <formatter type="brief" usefile="false" /> 
      <test name="TestClass" /> 
     </junit> 
    </target> 

    <target name="all" depends="test" /> 
</project> 

我做了測試的東西出來的小例子看起來是這樣的:

image

編輯:更新基於答案

回答

8

的junit-文檔有點稀疏。
如果你有外ANT_HOME/lib螞蟻的junit.jar你需要自己(的<taskdef/>FAQ,這也是有點不對勁,因爲它告訴使用class="...",不存在爲<taskdef />屬性定義任務):

<path id="classpath.test"> 
    <fileset dir="." includes="*junit.jar" /> 
</path> 

<taskdef name="junit" 
    classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"> 
    <classpath refid="classpath.test"/> 
</taskdef> 

這可用於檢查路徑:

<pathconvert property="testoutput" refid="classpath.test"/> 
<echo>Path = ${testoutput}</echo> 

文檔:
junit task


其他信息可以在this chat transcript

+0

沒有發揮出來。 – David 2012-03-19 19:22:28

+0

@David你有ant-junit.jar int ant_home/lib嗎?你需要這個lib,也是在某個地方。請參閱文檔:http://ant.apache.org/manual/Tasks/junit.html – oers 2012-03-19 21:36:56

+0

不,我不'',但如果您閱讀該行說:2.不要放在ANT_HOME/lib,而是包括他們的您的CLASSPATH環境變量中的位置。 – David 2012-03-20 12:19:40

0

我的解決辦法找到是創造詹金斯系統配置一個CLASSPATH變量,並添加螞蟻的junit.jar路徑