简体   繁体   中英

error: package org.junit does not exist

I keep getting these errors when i am trying to run my ant file.

  [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 

This is my ant build file

<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>

I know that somehow I am not including junit.jar into my build, but it should be being included because of in my path id, and I am at my wits end about what is wrong.

Thank you in advance

The <javac> task that creates the tests needs a classpath:

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

By the way, the following doesn't look right:

<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>

The <formatter> and <batchtest> elements shouldn't be nested under a <classpath> . They should be directly under <junit> . It should be more like:

<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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM