错误:包org.junit不存在

时间:2016-04-19 04:55:42

标签: java git junit ant

当我尝试运行我的ant文件时,我一直收到这些错误。

   [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中,并且我最终知道错误。

提前谢谢

1 个答案:

答案 0 :(得分: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>