有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java错误:包组织。junit不存在

当我试图运行我的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>

我知道不知何故我没有包括朱尼特。jar已经加入到我的构建中,但它应该被包括在内,因为它在我的路径id中,而我对什么是错误的一无所知

先谢谢你


共 (1) 个答案

  1. # 1 楼答案

    创建测试的<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>