4

巨大な混乱をクリーンアップするために、テストのコードをすべて1つの通常のJavaプロジェクト(すべてsrc / main / javaにある)に入れ、それを<scope>test</scope>別のプロジェクトの依存関係として宣言し、期待します。実行するテスト。

そのような運はありません。surefireは、ソースで確認できるテストを実行したいだけです。

ここでは、build-helper-pluginを使用し、テストをソースディレクトリとしてテストコンパイル環境に追加するという、悲しいことに明白な解決策を見ることができますが、それを避けたいと思っていました。

誰かが疑問に思っている場合、これのすべての理由は、いくつかの統合テストを実行するためにフェイルセーフプラグインを使用するためのPOM構成が非常に複雑になり、テストの実行からテストクラスのコンパイルを分割したかったためです。

4

3 に答える 3

8

これは、MavenSurefirev2.15で可能になりました。次の種類の構成をsurefireプラグインに追加するだけです。

<build>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.15</version>
    <configuration>
      <dependenciesToScan>
        <dependency>com.group.id:my-artifact</dependency>
        <dependency>com.group.id:my-other-artifact</dependency>
      </dependenciesToScan>
      ...
    </configuration>
    ...
  </plugin>
  ...
</build>

また、依存関係セクションで実際の依存関係を宣言する必要があります。

<dependencies>
  <dependency>
    <groupId>com.group.id</groupId>
    <artifactId>my-artifact</artifactId>
    <type>test-jar</type>
    <version>1.1</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>com.group.id</groupId>
    <artifactId>my-other-artifact</artifactId>
    <type>test-jar</type>
    <version>1.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>
于 2013-06-11T10:29:41.213 に答える
3

そのような運はありません。surefireは、ソースで確認できるテストを実行したいだけです。

これは現在、箱から出して行うことはできません。surefireは次のクラスを調べますtarget/test-classes

これは実際にはSUREFIRE-569としてログに記録されます-依存関係jarから単体テストを実行する方法があるはずです。

ここでは、build-helper-pluginを使用し、テストをソースディレクトリとしてテストコンパイル環境に追加するという、悲しいことに明白な解決策を見ることができますが、それを避けたいと思っていました。

現在の回避策は、フェーズの前にdependency:unpackjarを解凍するために使用することです。target/test-classestest

于 2010-08-22T21:40:42.183 に答える
1

逆にできませんか?

つまり、コードをsrc / test / javaに入れ、メインモジュールに依存して、テストモジュールでテストを実行しますか?

于 2010-08-22T21:32:13.013 に答える