2016-04-19 65 views
0

當我試圖運行我的ant文件時,我不斷收到這些錯誤。錯誤:包org.junit不存在

[javac] Compiling 8 source files to C:\Users\FaradaysCage\git\mancala\build 
    [javac] C:\Users\FaradaysCage\git\mancala\src\tests\BoardDataTest.java:1: error: package org.junit does not exist 
    [javac] import static org.junit.Assert.assertEquals; 
    [javac]      ^
    [javac] C:\Users\FaradaysCage\git\mancala\src\tests\BoardDataTest.java:1: error: static import only from classes and interfaces 
    [javac] import static org.junit.Assert.assertEquals; 
    [javac]^
    [javac] C:\Users\FaradaysCage\git\mancala\src\tests\BoardDataTest.java:2: error: package org.junit does not exist 
    [javac] import org.junit.Test; 
    [javac]    ^
    [javac] C:\Users\FaradaysCage\git\mancala\src\tests\BoardDataTest.java:8: error: cannot find symbol 
    [javac]  @Test 

這是我的Ant構建文件

<project name="Mancala" default="fullBuild" basedir="."> 
    <description> 
    Build file for Mancala program. Currently handles compilation 
    and distribution. Will also include automated testing and 
    generation of documentation. 
    </description> 
    <!-- set global properties for this build --> 
    <property name="src" location="src" /> 
    <property name="build" location="build" /> 
    <property name="build.test" location="build/tests" /> 
    <property name="dist" location="dist" /> 
    <property name="test" location="src/tests" /> 
    <property name="docs" location="docs" /> 
    <property name="test.report" location="testreport" /> 

    <!-- Define the classpath which includes the junit.jar--> 
    <!-- and the classes after compiling--> 
    <path id="junit.class.path"> 
     <pathelement location="lib/junit-4.11.jar" /> 
     <pathelement location="lib/hamcrest-core-1.3.jar" /> 
     <pathelement location="${build}" /> 
    </path> 

    <target name="init"> 
     <!-- Create the time stamp --> 
     <tstamp /> 
     <!-- Create the build directory structure used by compile --> 
     <mkdir dir="${build}" /> 
     <!-- Create the testreport directory used by Junit --> 
     <mkdir dir="${test.report}" /> 
     <!-- Create the build.test directory used by compile & Junit --> 
     <mkdir dir="${build.test}" /> 
    </target> 

    <target name="compile" depends="init" description="compile the source"> 
     <!-- Compile the java code from ${src} into ${build} --> 
     <javac srcdir="${src}" destdir="${build}" /> 
     <javac srcdir="${test}" destdir="${build.test}" /> 
    </target> 

    <!-- Run the JUnit Tests --> 
    <!-- Output is XML, could also be plain--> 
    <target name="junit" depends="compile"> 
     <junit printsummary="on" fork="true" haltonfailure="yes"> 
      <classpath> 
       <classpath refid="junit.class.path" /> 
       <pathelement location="${build.test}" /> 
       <formatter type="plain" /> 
       <batchtest todir="${test.report}"> 
        <fileset dir="${test}"> 
         <include name="**/*Test*.java" /> 
        </fileset> 
       </batchtest> 
      </classpath> 
     </junit> 
    </target> 

    <target name="doc" description="generate documentation"> 
     <mkdir dir="${docs}" /> 
     <javadoc sourcepath="${src}" destdir="${docs}"> 
      <fileset dir="${src}" /> 
     </javadoc> 
    </target> 

    <target name="dist" depends="compile" description="generate the distribution"> 
     <!-- Create the distribution directory --> 
     <mkdir dir="${dist}/lib" /> 

     <!-- Put everything in ${build} into the Mancala-${DSTAMP}.jar file --> 
     <jar jarfile="${dist}/lib/Mancala-${DSTAMP}.jar" basedir="${build}" /> 
    </target> 

    <!-- Runs the compiled application --> 
    <target name="run" depends="compile"> 
     <java classname="MancalaApp"> 
      <classpath> 
       <pathelement location="${build}" /> 
      </classpath> 
     </java> 
    </target> 

    <!--Add unit tests to build once implemented--> 
    <target name="fullBuild" depends="dist, doc, junit" description="create application, docs, and tests"> 
    </target> 

    <target name="clean" description="clean up"> 
     <!-- Delete the ${build} and ${dist} directory trees --> 
     <delete dir="${build}" /> 
     <delete dir="${dist}" /> 
     <delete dir="${docs}" /> 
     <delete dir="${build.test}" /> 
     <delete dir="${test.report}" /> 
    </target> 
</project> 

我知道,不知怎的,我不包括的junit.jar到我的身材,但應被包括在內,因爲在我的路徑ID,和我在我的智慧結束時,我發現什麼是錯的。

預先感謝您

+0

查看本文有關準備ant構建腳本[ant build script](http://ant.apache.org/manual/using.html#path)。我會嘗試一些如下' <文件集DIR = 「LIB」> <包括名稱= 「**/*。JAR」/> ' – MSameer

+1

*我不包括junit.jar到我的構建中,但它應該被包含,因爲在我的路徑ID *:不,它不應該。你爲什麼認爲它應該?你在文檔的某處看到過,如果路徑是用id定義的,它會自動添加到javac任務的類路徑中?不是。 –

回答

0

創建該測試的<javac>任務需要一個類路徑:

<javac srcdir="${test}" destdir="${build.test}" classpathref="junit.class.path" /> 

順便說一句,下面不看的權利:

<junit printsummary="on" fork="true" haltonfailure="yes"> 
    <classpath> 
     <classpath refid="junit.class.path" /> 
     <pathelement location="${build.test}" /> 
     <formatter type="plain" /> 
     <batchtest todir="${test.report}"> 
      <fileset dir="${test}"> 
       <include name="**/*Test*.java" /> 
      </fileset> 
     </batchtest> 
    </classpath> 
</junit> 

<formatter><batchtest>元素不應嵌套在<classpath>之下。他們應該直接在<junit>之下。它應該更像是:

<junit printsummary="on" fork="true" haltonfailure="yes"> 
    <classpath> 
     <classpath refid="junit.class.path" /> 
     <pathelement location="${build.test}" /> 
    </classpath> 
    <formatter type="plain" /> 
    <batchtest todir="${test.report}"> 
     <fileset dir="${test}"> 
      <include name="**/*Test*.java" /> 
     </fileset> 
    </batchtest> 
</junit>