【问题标题】:Ant package org.junit does not existAnt包org.junit不存在
【发布时间】:2018-05-06 11:13:15
【问题描述】:

我第一次使用 Ant 并设置了项目将创建 jar 文件、运行测试、运行 jar 文件的任务。除了由于我不清楚的原因进行的测试之外,一切都成功获得,通过使用此资源"Getting started – Ant" 我尝试下载测试但它没有成功,因为由于某种原因junit库不可见。以下是我的错误:

[mkdir] Created dir: D:\Eclipse project\CalcSimple\build\main
[javac] Compiling 3 source files to D:\Eclipse project\CalcSimple\build\main
[javac] D:\Eclipse project\CalcSimple\src\testing\CalcAPITest.java:4: error: package org.junit does not exist
[javac] import org.junit.Test;

测试本身的工作人员在那里计算一个原始计算器。 忍不住发现错误并建议如何解决它? 项目结构:

我的代码:

<project name="CalcAnt" basedir="." default="main">


    <property name="build.dir"   value="build"/>
    <property name="jar.dir"     value="${build.dir}/jar"/>
    <property name="main.build.dir" value="build/main"/>
    <property name="main.src.dir" value="src"/>
    <property name="test.build.dir" value="build/test"/>
    <property name="test.src.dir" value="src/testing"/>
    <property name="main-class"  value="CalcSimples.CalcSimple"/>

    <!--PATH LIB-->
    <path id="classpath.test">
        <pathelement location="lib/junit-4.11.jar"/>
        <pathelement location="lib/hamcrest-core-1.3.jar"/>
        <pathelement location="${main.build.dir}"/>
    </path>

        <!--CLEAN-->
    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

        <!--COMPILE-->
    <target name="compile">
        <mkdir dir="${main.build.dir}"/>
        <javac srcdir="${main.src.dir}" destdir="${main.build.dir}" includeantruntime="false"/>
    </target>

        <!--TEST-COMPILE-->
    <target name="test-compile" depends="compile">
        <mkdir dir="${test.build.dir}"/>
        <javac srcdir="${test.src.dir}" destdir="${test.build.dir}" includeantruntime="false">
            <classpath refid="classpath.test"/>
        </javac>
    </target>

    <!--TEST-->
    <target name="test" depends="test-compile">
        <junit printsummary="on" haltonfailure="yes" fork="true">
            <classpath>
                <path refid="classpath.test"/>
                <pathelement location="${test.build.dir}"/>
            </classpath>
            <formatter type="brief" usefile="false" />
            <batchtest>
                <fileset dir="${test.src.dir}" includes="**/*Test.java" >
                </fileset>
            </batchtest>
        </junit>
    </target>

    <!--CREATE JAR-->
    <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}"/>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${main.build.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
        </jar>
    </target>

    <!--RUN JAR-->
    <target name="run" depends="jar">
        <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
    </target>

    <!--CLEAN-BUILD-->
    <target name="clean-build" depends="clean,jar"/>

    <!--MAIN-->
    <target name="main" depends="clean,run"/>
</project>

【问题讨论】:

    标签: java junit ant


    【解决方案1】:

    您的测试位于src 之下,并且您的“编译”目标尝试编译它,但由于javac 任务不知道junit.jar 而失败。

    您需要将测试移出src 目录或明确排除测试被“编译”目标编译。如果要将testing 保留为src 的子目录,请将“编译”中的javac 更改为

    <javac srcdir="${main.src.dir}" destdir="${main.build.dir}" includeantruntime="false">
        <exclude name="testing/**"/>
    </javac>
    

    不过,将主要和测试源代码保存在不同的源代码树中被认为是最佳做法。通常你会创建类似src/main 的东西,将CalcSimples 目录移到那里,然后将main.src.dir 设置为src/main

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 2017-11-01
      • 2020-10-23
      • 2015-06-27
      • 2019-02-28
      • 1970-01-01
      • 2012-09-06
      • 2018-06-18
      相关资源
      最近更新 更多