2017-04-18 10 views
0

私は以下の構造をmvnに持っています。親mvnモジュールからテストを実行するには?

| pom.xml (parent) 
| 
| 
+----- module A (common classes) 
|  | pom.xml 
|  | 
|  \---src 
|   +---main 
|   | 
|   \---test 
|    +---junit 
|    | 
|    \---integration 
| 
+----- module B (web app) 
|  | pom.xml 
|  | 
|  \---src 
|   +---main 
| 
+----- module C (web app) 
|  | pom.xml 
|  | 
|  \---src 
|   +---main 

モジュールAは、すべての後続モジュール(B、C、...)によって継承されたモジュールです。このモジュールには、共通の機能とjunit/integrationテストケースがあります。それはWebアプリケーションではありません。

モジュールBはウェブアプリです。モジュールBに依存しています。

モジュールCはWebアプリケーションです。モジュールBに依存しています。

モジュールAにはジャージの残り/ APIコードが存在します。この方法では、どのモジュールを配備しても、残りの/ apiにアクセスできます。

これまで、トップ(親)pom.xml(つまり、mvn verify)を実行すると、Tomcatインスタンスを立ち上げるために、モジュールCでMaven FailSafeプラグインを設定することができました。

しかし、モジュールCはモジュールAからの統合テストを見ることができません。私はmaven-jar-plugin(http://maven.apache.org/guides/mini/guide-attached-tests.html)の設定を試みました。モジュールAIののpom.xmlで

は持っている:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>3.0.2</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>test-jar</goal> 
     </goals> 
     <configuration> 
      <includes> 
      <include>**/*IT.java</include> 
      </includes> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

とモジュールCIではあります

<dependency> 
     <groupId>groupId</groupId> 
     <artifactId>SCCommon</artifactId> 
     <type>test-jar</type> 
     <classifier>tests</classifier> 
     <version>9.1.0-SNAPSHOT</version> 
     <scope>test</scope> 
    </dependency> 

誰も私が私がのModulaでこれらの統合テストを実行することができます方法を理解するのに役立つことができますA mvnがモジュールCのフェールセーフプラグインを実行しているとき。

注:統合テストは* IT.javaという名前になり、フェールセーフプラグインによって取得されます。

このプラグインを使用していても、これを行う方法はありますか?

ありがとうございます。

+0

' **/* IT.java'には、統合テストを行うべき別の統合テストモジュールが必要です。 – khmarbaise

答えて

0

モジュールCは、あなたのmaven-フェイルセーフ・プラグイン(2.15以降)の構成の<dependenciesToScan>属性にその依存関係を参照することができclassfierテストでの依存が含まれている場合。私は空のテストアーカイブになってしまったあなたのmaven-jarファイル・プラグイン構成を使用

http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#dependenciesToScan

<dependency> 
    <groupId>com.group</groupId> 
    <artifactId>A</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <classifier>tests</classifier> 
</dependency> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.15</version> 
    <executions> 
     <execution> 
      <id>it</id> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <dependenciesToScan> 
      <dependency>com.group:A</dependency> 
     </dependenciesToScan> 
    </configuration> 
</plugin> 

。パターンを<include>**/*IT.class</include>に変更する必要がありました。

+0

ありがとう、私はテストクラシファイアとdependenciesToScanタグを設定に追加しました。これはすべてモジュールCのpomにあります。また、拡張機能を.javaから.classに変更して、maven-jar-pluginを動作させました。チェックされ、アーカイブは空ではありません。プロジェクトの目標を実行できませんでした。モジュールC:プロジェクトcom.xxx.connectの依存関係を解決できませんでした:ModuleC:war:9.1.0-SNAPSHOT:artifact com.xxx.pathwaysを見つけることができませんでした。 .common:ModuleA:jar:tests:9.1.0-SNAPSHOT。しかし、ターゲットの下でモジュールAに行くと、ModuleA-9.1.0-SNAPSHOT-tests.jarファイルが表示されます – allegjdm93

+0

@ allegjdm93モジュールAをインストールするために 'mvn verify'を実行する前に' mvn install'を実行しましたか?ローカルのmvnリポジトリので、他のプロジェクトは依存関係を使用できますか?あるいは、POMファイルのどこかにタイプミスがあります。 –

関連する問題