5

テストデータの読み取りと入力のために、別のモジュールで抽象クラスを使用しています。

package src/main/java/path/to/my/base/testclass;
InputStream stream = getClass().getResourceAsStream(filename);

filenameは、例えば"test.txt"、に位置していますsrc/main/resources/path/to/my/base/testclass

この抽象クラスをテストクラスと同じモジュールに配置する限り、すべて正常に動作します。次に、acstract クラス (およびリソース) を他のモジュールに抽出し、コンパイルし、pom に追加します。結果: テストの実装は正常に実行されますが、IO 例外が発生します。file could not be found.

ここで何が欠けていますか?抽象クラスが同じモジュール内では機能するのに、別のモジュール内では機能しないのはなぜですか?

4

1 に答える 1

2

テスト リソースは、このアーティファクトのテスト専用であり、デプロイされません。

これを回避するには、次の 2 つの方法があります。

  • ダーティー: アプリにテスト jar をメイン jar と共にデプロイさせ、それをスコープ TEST の依存関係として 2 番目のアーティファクトに追加します。
  • クリーン: 基本テスト クラスと共通テスト リソース用に別のテスト アーティファクトを作成します。重要: このアーティファクトでは、src/test には何も入力せず、すべてを src/main に入力します。このテスト アーティファクトを、スコープ TEST で他の両方のアーティファクトから参照します。
于 2012-06-18T12:41:11.780 に答える