2016-09-02 6 views
11

私たちは、Mavenフレームワークに基づいたマルチモジュールからなるテストスイートを用意しています。使用されるモジュール -マルチモジュールテストスイートとのアレンチュアの統合

  • project [いいえコード]
  • test [@Testクラスは、/SRC /メイン/ javaの下に含ま/SRC /メイン/リソースtestng.xmlれる]
  • core [構成
  • driver [テストバケットを構成し、testngを使用してレポート生成を変調する]
  • を統合しようとする

、私はプロジェクトpom.xmlに以下を追加しました - としても

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>${maven-surefire-plugin.version}</version> 
       <configuration> 
        <testFailureIgnore>false</testFailureIgnore> 
        <argLine> 
         -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar 
        </argLine> 
        <properties> 
         <property> 
          <name>listener</name> 
          <value>ru.yandex.qatools.allure.junit.AllureRunListener</value> 
         </property> 
        </properties> 
       </configuration> 
       <dependencies> 
        <dependency> 
         <groupId>org.aspectj</groupId> 
         <artifactId>aspectjweaver</artifactId> 
         <version>${aspectj.version}</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${maven-compiler-plugin.version}</version> 
       <configuration> 
        <source>${jdk.version}</source> 
        <target>${jdk.version}</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-deploy-plugin</artifactId> 
       <version>${maven-deploy-plugin.version}</version> 
      </plugin> 
      <plugin> 
       <groupId>org.eclipse.jetty</groupId> 
       <artifactId>jetty-maven-plugin</artifactId> 
       <version>9.2.10.v20150310</version> 
       <configuration> 
        <webAppSourceDirectory>${project.build.directory}/site/allure-maven-plugin</webAppSourceDirectory> 
        <stopKey>stop</stopKey> 
        <stopPort>1234</stopPort> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<reporting> 
    <excludeDefaults>true</excludeDefaults> 
    <plugins> 
     <plugin> 
      <groupId>ru.yandex.qatools.allure</groupId> 
      <artifactId>allure-maven-plugin</artifactId> 
      <version>2.2</version> 
     </plugin> 
    </plugins> 
</reporting> 

テストpom.xmlに同じの依存関係 -

<!--allure related dependencies--> 
     <dependency> 
      <groupId>ru.yandex.qatools.allure</groupId> 
      <artifactId>allure-testng-adaptor</artifactId> 
      <version>1.4.16</version> 
      <exclusions> 
       <exclusion> 
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>com.github.detro.ghostdriver</groupId> 
      <artifactId>phantomjsdriver</artifactId> 
      <version>1.0.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hamcrest</groupId> 
      <artifactId>hamcrest-all</artifactId> 
      <version>1.3</version> 
     </dependency> 
     <dependency> 
      <groupId>ru.yandex.qatools.allure</groupId> 
      <artifactId>allure-java-annotations</artifactId> 
      <version>1.5.0.RC2</version> 
     </dependency> 

ステップ1からmvn exec:java -pl driverテストを実行した後、私は/標的/魅力-結果フォルダが生成さ見ることができます。

ステップ2からmvn jetty:run桟橋サーバーに

ステップ3スタート読み込み - しかし、私はローカルホストに行くとき:私のブラウザで8080それはちょうど見出し

ディレクトリを持っています:/

質問

  • 私は桟橋レポートを見つけることができないですが、どこを見つけ出すことができなかったので、私が指定したパスがどこか間違っている疑い。実行されるテスト用か、リソース内のtestng.xml用ですか? または、POMのどこかでパスを修正する必要がありますか?

  • また、依存関係(親のproject pom)を使用しようとしている方法は正しいですか?


更新1

次のように使用されるEXECコンフィギュレーションは、 -

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.5.0</version> 
      <configuration> 
       <mainClass>com.driver.Driver</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

任意応答を感謝。

答えて

3

この質問には、細部の不足のため明確ではない多くの公開点があります。

あなたの説明によると、プロジェクトの構造は以下の通りので、次のとおりです。

project 
    | 
    |--- test-module 
    |--- core-module 
    |--- driver-module (depends on `core` and `test`) 
    | 
    \ pom.xml 

をあなたが実際にのみ、driverモジュールを介してテストを実行し、exec-maven-pluginを経て、しかしallureドキュメントは、古典的なアプローチを指定し、testを実行しますつまり、テスト実行専用のMavenフェーズ(maven-surefire-plugin経由、このフェーズでMavenによって自動的に呼び出されるのはdefault bindingsです)。

あなたが実際にそのマニュアルで指定されmaven-surefire-pluginを設定:親pom.xmlファイルにそれを指定すると、この場合には罰金になり、そのpluginManagementセクションに> Mavenはmaven-surefire-pluginが結合デフォルトのdefault-test実行中にそのグローバルコンフィギュレーションをピックアップします。

ただし、メカニズム全体がtestフェーズにリンクされています。それを実行しますか?

exec-maven-pluginモジュールの詳細、およびdriverモジュールに関する詳細、およびjetty-maven-pluginを使用してレポートを表示する理由については説明しませんでした。通常、テストレポートは利用可能であり、直接のプロセス(CI、企業サーバへの配備など)で必要とされない限り、直接htmlファイルを見ることができ、埋め込み型桟橋サーバーでそれらをホストする必要はありません。これらのレポートは、siteライフサイクルとそのmaven-site-pluginを介して生成することができるプロジェクトドキュメントサイトでも利用可能にする必要があります。

具体的にはsiteフォルダを指しているjetty-maven-pluginの設定を共有しています。このフォルダはtestフェーズ(このファイルを呼び出す場合)で生成されますか?またはexecの呼び出し中に

親のpomで依存関係を使用する方法については、実際にあなたの質問にそれを共有しなかったので、助けが簡単ではありません。通常、すべてのモジュールに共通する親のpomのdependenciesセクションに依存関係を置きます(たとえば、古典的な例はlog4j、すべてのモジュールが使用するものです)。それ以外の場合は、親pomのdependencyManagementセクションを使用して、1つまたは複数のモジュールで使用される可能性のある特定の依存関係のバージョンを管理します(モジュールは、それらを有効に使用するために再宣言する必要があります。親)。つまり、親のpomはガバナンスと調和の中心的な場所です。


更新

生成/target/allure-resultsフォルダに関しては、あなたは(つまり、例えばそれはindex.htmlが含まれている必要があります)有効なサイトのディレクトリであるために、その内容を確認することも必要です。

新しいMavenのWebアプリケーションプロジェクトを作成し、そのpom.xmlファイルに以下を追加:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <version>9.2.10.v20150310</version> 
      <configuration> 
       <webAppSourceDirectory>${project.build.directory}/site</webAppSourceDirectory> 
       <stopKey>stop</stopKey> 
       <stopPort>1234</stopPort> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

(注:正確にあなたの質問ごとに、しかしsiteディレクトリを単に指して)

と実行:

mvn clean install site 
mvn jetty:run 

(上記呼び出されたようsiteフェーズ中に生成される)Mavenのサイト利用可能ですt localhost:8080(デフォルトの桟橋URL)。これは、index.htmlが生成されたためです。

ただし、手動でindex.htmlを削除すると、jettyはDirectory: /ページを表示し、使用可能なファイルをリストします。

したがって、ほとんどの場合、魅力レポートはindex.htmlファイルを生成しませんでした。おそらくそれを生成するのではなく、testフェーズで生成されたHTMLレポートです。

+1

1.いいえ、私たちは 'mvn clean test'を使ってテストを実行しません。 2.私たちは今のところCIのためにレポートを使用したいと思います。 3.すでに「ターゲット/魅力結果フォルダが生成されています。 step1の 'mvn exec..'の後に。 4.モジュール固有のpomでは 'dependencies'を使用しています。親pomで' pluginManagement'を使用しているプラ​​グインだけです。 – nullpointer

+0

@nullpointer Jettyエラーについての私の更新を確認して、私はそれを複製することができました。 'exec'設定に関しては、[ここに報告されたもの](https://github.com/allure-framework/allure-core/blob/master/allure-report-preview/pom.xml)と似ていますか? –

+0

私はまだ投稿した問題を解決しません。マルチモジュールとmvn exec:javaは私が探している組み合わせの中にあります。答えに共有されている情報は、魅力レポートや桟橋の実装について多くのことを理解し、それを実装する方向に向かううえで役立ち、報奨金も受け入れられることは間違いありません。 – nullpointer