2017-11-22 82 views
1

初めてAntを使用し、プロジェクトでjarファイルが作成され、テストが実行され、jarファイルが実行されるようにタスクが設定されました。このリソースを使用して私にはわかりにくい理由でテストを除いてすべて正常に取得されました"Getting started – Ant"テストをダウンロードしようとしましたが、何らかの理由でjunitライブラリが表示されないために成功しませんでした。ここに私のミスは、以下のとおりです。Antパッケージorg.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; 

enter image description here

テスト自体の労働者が原始的な電卓を数えます。 エラーを発見し、修正する方法を提案するのに役立つことはできませんでしたか? プロジェクト構造: enter image description here

マイコード:

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

答えて

1

あなたのテストはsrcの下に住んでいると、あなたの「コンパイル」ターゲットはjavacタスクがjunit.jarを知らないと失敗し、それをコンパイルしようとします。

srcディレクトリからテストを移動するか、テストが "コンパイル"ターゲットによってコンパイルされないよう明示的に除外する必要があります。あなたが別のソースツリーのメインとテストのソースを維持

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

からsrc変更「コンパイル」でjavacのサブディレクトリとしてtestingを維持したい場合はしかし、ベストプラクティスと考えています。通常はsrc/mainのようなものを作成し、そこにCalcSimplesディレクトリを移動してmain.src.dirsrc/mainに設定します。

関連する問題