2011-10-21 96 views
1

我將我的JUnit測試自動化到我的Ant構建中。但是,我的簡單測試僅在從IDE和命令行運行時纔會通過,但在Ant的<junit>任務中失敗。當我從命令行運行它(我在技術上使用Ant <exec>任務)的結果是:JUnit測試在Ant中以'<junit>`任務失敗,但通過'<exec>`?

clean: 

compile_tests: 
    [javac] Compiling 2 source files to C:\MY_TEMP 

junit_exec: 
    [exec] JUnit version 4.10 
    [exec] . 
    [exec] Time: 0.004 
    [exec] 
    [exec] OK (1 test) 
    [exec] 

BUILD SUCCESSFUL 
Total time: 1 second 

,但是當我使用<junit>任務:

Buildfile: C:\MY_TEMP\build.xml 

clean: 

compile_tests: 
    [javac] Compiling 2 source files to C:\MY_TEMP 

junit_ant: 
    [echo] junit_ant started 
    [junit] Test SimpleTest FAILED 

BUILD SUCCESSFUL 
Total time: 0 seconds 

MY_TEMP內容是junit-4.10.jarSimpleTest.javabuild.xml

我已將junit-4.10.jar複製到%ANT_HOME%\lib文件夾中,如Ant junit task documentation所示。它已經有ant-junit.jarant-junit4.jar

我的Java版本是1.6.0_26。

我的測試是:

// YES, this is the default package 
import org.junit.*; 

public class SimpleTest { 

    @Test 
    public void mySimpleTest(){ 
     Assert.assertEquals( 2, 1 + 1 ); 
    } 

} 

我的Ant文件(build.xml文件),是:

<?xml version="1.0"?> 
<project name="regression_tests" basedir="."> 

    <target name="clean"> 
     <delete> 
      <fileset dir="." includes="*.class" /> 
     </delete> 
    </target> 

    <target name="compile_tests" depends="clean"> 
      <javac srcdir="." destdir="." source="1.6" target="1.6" includeantruntime="false" > 
      <classpath> 
       <pathelement location="./junit-4.10.jar" /> 
      </classpath> 
     </javac> 
    </target> 

    <target name="junit_ant" depends="compile_tests" > 
     <echo message="junit_ant started" /> 

     <junit> 
      <test name="SimpleTest" /> 
     </junit> 
    </target> 

    <target name="junit_exec" depends="compile_tests"> 
     <exec executable="java" dir="." > 
      <arg value="-classpath" /> 
      <arg value=".;junit-4.10.jar" /> 
      <arg value="org.junit.runner.JUnitCore" /> 
      <arg value="SimpleTest" /> 
     </exec> 
    </target> 

</project> 
+0

什麼是測試失敗? –

+0

我將如何發現?即使給Ant提供了'-v'選項,它也不會打印任何有關失敗的內容。從測試本身來看哪些是不可能失敗的,我認爲我必須錯過配置方面的一些東西。 – ArtB

+0

查看測試報告? –

回答

3

如果測試通過一種方式,而另一個失敗,很可能一些classpath-相關的,就像它找不到測試類,被測試的類或者庫。

測試結果應該有助於澄清這是什麼問題。

2

具體來說,我editted我junit_ant任務:

 <junit> 
      <classpath location="." /> 

      <test name="SimpleTest" /> 
      <formatter type="xml" /> 
     </junit> 

     <junitreport todir="."> 
      <fileset dir="."> 
       <include name="TEST-*.xml" /> 
      </fileset> 
      <report todir="." /> 
     </junitreport> 

,然後向我表明故障是java.lang.ClassNotFoundException: SimpleTest所以我只是說<classpath location="." /><junit>任務,然後它的工作。