0

私はbuild.xmlを書いています。ただし、junit タスクに問題があるようです。junitタスクを実行すると。私は成功を収めることができますが、junitレポートには、エラーのある1つのテストしか実行されていないことが示されています. しかし、私は10以上のテストを持っています。私のjunitタスクで何かが実行されているのではないかと思います。これが私のコードです。

<property name="src.dir"    value="src"/>
<property name="bin.dir"    value="bin"/>
<property name="dest.dir"   value="dest"/>
<property name="test.dir"   value="test/>
<property name="lib.dir"    value="lib"/>
<path id="classpath">
    <pathelement location="${lib.dir}/junit-4.11.jar"/>
    <pathelement location="${lib.dir}/ant-junit4.jar"/>
</path>

<target name="test" depends="compile">
    <junit printsummary="yes" haltonfailure="no">
            <classpath>
                <pathelement location="${bin.dir}"/>
                <path refid="classpath"/>
            </classpath>
            <formatter type="plain" usefile="false"/>   
                <batchtest fork="yes">
                    <fileset dir="${test.dir}" includes="*Test*.java"/>
                </batchtest>
            </junit>
        </target>

何が悪いのかわからないので、誰か助けてくれませんか?

4

1 に答える 1

1

そして、何が起こっているのですか?エラーメッセージは表示されますか?

通常、次のことを行う必要があります。

  • 通常のコードをコンパイルします。結果のファイルは、または*.classなどのディレクトリ内に配置する必要があります。これを行うには、タスクのパラメーターを使用します。target/classesbuild/classesdestdir<javac>
  • JUnit テストをコンパイルします。
    • classpathには、通常のクラスをコンパイルするために必要なすべての jar が必要です。
    • 通常のクラスがコンパイルされたdestdir場所への参照が必要です。
    • JUnit jar が必要です。
    • これらは、通常の jarとは別のディレクトリにコンパイルする必要があります。通常、これはtarget/test-classesまたはbuild/test-classesです。

JUnit テストをコンパイルしたら、それらを実行できます。あなたはあなたがした<junit>ようにタスクを使うことができます。

  • includeantruntimeパラメータがに設定されていることを確認する必要がありますtrue
  • にも設定する必要がありforkますtrue
  • テストクラスをコンパイルしたときと同じクラスパス (持っていた 3 つの要素すべて) が必要です。さらに jar が必要になる場合がありますが、通常は必要ありません。
  • コンパイル済みのJUnit テストクラスファイルtarget/test-classes(またはに保存したもの) でテストを実行build/test-classesします。この例では、ソースに対して実行しようとしています。

ディレクトリ レイアウトには Maven 標準を使用しています。これは、私の Java ソースが下src/main/javaにあり、JUnit Java ファイルが下にあることを意味しますsrc/test/java。必要な XML またはプロパティ、またはその他のソース ファイルはすべて に保存されsrc/main/resourcesます。通常のソースは にコンパイルされtarget/classes、Junit ソースは にコンパイルされtarget/test-classesます。

これにより、すべてが分離されているため、ディレクトリのコンパイルで**/test/**例外が発生することを心配することなく、コードとテスト コードを別々にコンパイルすることが容易になります。**/Test/****/JUnit/**

お役に立てれば。

于 2012-12-10T00:53:50.407 に答える