0

ant を使用してプロジェクトをセットアップする方法を理解しようとしています。何らかの理由で、junit テストを実行できません。これを理解しようと、ant を使用して簡単なダミー プロジェクトをセットアップしました。持っているのは、簡単に合格するはずの単一の単体テストだけです。

私のプロジェクト構造は次のようになります。

.
|-- build.xml
|-- src
`-- test
    |-- foo
    |   `-- MainTest.java
    `-- junit-4.10.jar

MainTest.javaこのように見えます。

package foo;

import org.junit.*;
import static org.junit.Assert.*;

public class MainTest {
    @Test
    public void passes() {
        System.out.println("It works!");
    }
}

ここに build.xml があります。

<project name="Nes" default="build" basedir=".">
    <target name="build-test">
        <javac srcdir="test">
            <classpath>
                <pathelement location="test/junit-4.10.jar" />
            </classpath>
        </javac>
    </target>

    <target name="test" depends="build-test">
        <junit>
            <classpath>
                <pathelement location="test/junit-4.10.jar" />
            </classpath>
            <batchtest>
                <fileset dir="test" includes="foo/MainTest.class" />
            </batchtest>
        </junit>
    </target>
</project>

実行から得られる出力は次のとおりant testです。

Buildfile: /home/hayden/dev/nes/build.xml

build-test:
    [javac] /home/hayden/dev/nes/build.xml:4: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

test:
    [junit] Test foo.MainTest FAILED

BUILD SUCCESSFUL
Total time: 0 seconds

Ant 1.8.2 と Java 6 を実行しています。

私は何を間違っていますか?

4

1 に答える 1

0

.classJUnit が実際にテストを実行できるように、実際のファイルへのパスを追加する必要があります。fooテスト クラス名を完全に修飾しているため、パッケージを含むディレクトリを含める必要があります。

<target name="test" depends="build-test">
    <junit>
        <classpath>
            <pathelement location="test/junit-4.10.jar" />
            <pathelement location="test" />
        </classpath>

ただし、javacビルド アーティファクト (つまり.classファイル) をソース ファイルと同じディレクトリに出力しないようにタスクを変更することをお勧めします。最上位の「ビルド」ディレクトリを作成し、すべてのビルド出力をそこに置きます。

また、タスクincludeantruntimeに属性を追加して、最初の警告を抑える必要があります。javac

    <javac srcdir="test" includeantruntime="false">
于 2012-05-27T19:26:34.400 に答える