当我尝试运行我的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中,并且我最终知道错误。
提前谢谢
答案 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>