web-dev-qa-db-ja.com

Mavenでのテストコードの共有

Mavenの別のモジュールのテストコードに依存するにはどうすればよいですか?

たとえば、2つのモジュールがあります。

  • ベース
  • メイン

MainのテストケースでBaseのベーステストクラスを拡張したいと思います。これは可能ですか?

更新:テストjarの作成を伴う 許容可能な回答 が見つかりました。

175
flicken

classifierではなくtype を使用することをお勧めします( classifier も参照)。それはMavenにあなたがやっていることをもう少し明示的に伝えます(そしてm2Eclipseとq4eの両方がそれを好むことがわかりました)。

<dependency>
  <groupId>com.myco.app</groupId>
  <artifactId>foo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>
182
Ben

基本モジュールの提案をありがとう。ただし、この目的のためだけに新しいモジュールを作成することは避けたいです。

Surefire Maven documentation および a blog で受け入れ可能な答えを見つけました。 「 テストクラスを含むjarの作成方法 」も参照してください。

これにより、テストのあるモジュールがコードを共有できるように、 jar plugin を使用してsrc/test/Javaからコードのjarファイルが作成されます。

<project>
  <build>
    <plugins>
     <plugin>
       <groupId>org.Apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.4</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>
</project>

上記で作成された添付テストJARを使用するには、指定されたテストの分類子を使用してメインアーティファクトへの依存関係を指定するだけです。

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project> 
171
flicken

これを解決するには、src/main/Javaとしてテストコードを使用してmavenプロジェクトを作成し、プロジェクトに次の依存関係を追加します。

    <dependency>
        <groupId>foo</groupId>
        <artifactId>test-base</artifactId>
        <version>1</version>
        <scope>test</scope>
    </dependency>
12
sal