3

次のディレクトリ構造を持つEclipseプロジェクトがあります。

MyProj/
    src/main/java/
        com.me.myproject.widgets
            Widget.java
    src/main/config
        widget-config.xml
    src/test/java
        com.me.myproject.widgets
            WidgetTest.java
    src/test/config
        widget-test-config.xml

クラスはWidget、クラスパス上の任意の場所から構成(XML)ファイルを読み取り、それを使用してプロパティを構成します。

WidgetTestファイルを右クリックしてに移動すると、のテストケース(すべてJUnitで記述されたもの)をEclipse内で実行できるようにしようとしていますRun As >> JUnit Test。実際には、独自に構成されたクラスパスを使用してカスタマイズされた実行構成として実行する必要があると思いますが、これまでに行ったことがないため、それについてはよくわかりません。

カスタム実行構成をWidgetTest.javaJUnitテストとして実行src/test/config/widget-test-config.xmlし、クラスパスに正常に配置する方法を知っている人はいますか?前もって感謝します!

この質問は、ランタイムクラスパスからリソースを読み取る方法ではなく、そもそもEclipseのJUnitRunConfigクラスパスでリソースを取得する方法に関するものであることに注意してください。

4

2 に答える 2

9

src/test/config/widget-test-config.xmlEclipseがソースフォルダーと見なすものの中にある限り、それはすでにクラスパス上にあるはずだという印象を受けました。

src / testはEclipseのソースフォルダーですか?それでも問題が解決しない場合は、次の実験を試してください。

widget-test-config.xmlをsrcルートにコピーすると、Widgetクラスはそれを読み取ることができますか?

そうであれば

次に、テストフォルダがクラスパス上にないという問題があります。そのように手動で追加してみてください。

WidgetTestを右クリックして、を選択しますRun As -> Junit Test。これにより、でアクセス可能なJUnit実行構成が自動的に作成されRun -> Run Configurationsます。次のように、クラスパスエントリを変更して、.xmlファイルを含むプロジェクトを追加します。

ここに画像の説明を入力してください

いいえの場合

.xmlファイルをsrcルート(つまりデフォルトパッケージ)に移動した後でも、ウィジェットクラスがそれを読み取れない場合は、別の問題があります。その場合、.xmlファイルを読み取ろうとしているWidgetTestにコードのスニペットを提供できれば素晴らしいと思います。

ワーキングコード

ここに少し機能するコードがあります:

public class A {

    @Test
    public void test() {
        InputStream stream = A.class.getResourceAsStream("/SomeTextFile.txt");
        System.out.println(stream != null);
        stream = Test.class.getClassLoader()
            .getResourceAsStream("SomeTextFile.txt");
        System.out.println(stream != null);
    }

}

上記は単純なJAVAプロジェクトで機能し、正常に実行されます。(正常に実行されるということは、コンソールに「true」が出力されることを意味します)

このコードを簡単に試すために、GITHubリポジトリを作成中です。

テストプロジェクトを使用したGITハブリポジトリ

このzipでプロジェクトをインポートして、コードが機能することを確認できるはずです。Testクラスを右クリックして、Aをクリックすると、コンソールにRun As -> Junit Test2つ表示されます。true

于 2012-08-17T12:50:42.027 に答える
2

WidgetTestクラスがJUnitテストとして記述されている場合、EclipseはそれをJUnitテストとして自動的に実行しようとします。そうでない場合は、パッケージエクスプローラーでクラスを右クリックし、[実行]>>[構成の実行]>>[JUnit]を選択する必要があります。

Junitテストを実行するには:

  • JUnit3では、クラスはTestCaseを実装し、すべてのメソッド名は「test」を開始する必要があります

  • JUnit4では、すべてのメソッドの前に@Testアノテーションを付ける必要があります

その構成ファイルをクラスパスに配置するには:上記のように実行構成を設定する場合は、右上のペインの[引数]タブに移動し、VM引数でクラスパスを指定します。

   -cp .:/path/to/the/config/file 

ただし、そのファイルがソースディレクトリのパッケージに含まれている場合は、自動的にクラスパスに含まれる必要があります。

于 2012-08-17T12:50:13.657 に答える