2017-12-05 13 views
0

私は複数のsuiteXmlFilesを持つ非常に簡単なテストプロジェクトのセットアップをしています。これのpom.xmlで選択したsuiteXmlFileをmaven surefireプラグインで実行することができません

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>testautomation</groupId> 
<artifactId>testautomation</artifactId> 
<version>0.0.1-SNAPSHOT</version> 

<properties> 
    <log4j.version>2.8.2</log4j.version> 
    <selenium.version>2.53.0</selenium.version> 
    <testng.version>6.10</testng.version>  
    <relevantcodes.version>2.41.1</relevantcodes.version> 
    <aws-lambda-java-core.version>1.1.0</aws-lambda-java-core.version> 
    <aws-java-sdk-dynamodb.version>1.11.139</aws-java-sdk-dynamodb.version> 
    <rest-assured.verison>2.9.1-SNAPSHOT</rest-assured.verison> 
    <json-path.version>2.9.0</json-path.version> 
    <json.version>20160810</json.version> 
    <xml-path.version>2.9.0</xml-path.version> 
    <json-schema-validator.verison>2.9.0</json-schema-validator.verison> 
    <poi.verison>3.15</poi.verison> 
    <poi-ooxml.verison>3.15</poi-ooxml.verison> 
    <poi-ooxml-schemas.version>3.15</poi-ooxml-schemas.version> 
    <poi-scratchpad.version>3.2-FINAL</poi-scratchpad.version> 
    <jackson-databind.version>2.8.5</jackson-databind.version> 
    <maven.compiler.plugin.version>3.6.1</maven.compiler.plugin.version> 
    <opencsv>3.10</opencsv> 
    <java.version>1.8</java.version> 
    <!-- <maven.jar.plugin.version>3.0.2</maven.jar.plugin.version> --> 
    <maven.jar.plugin.version>2.6</maven.jar.plugin.version> 
    <maven-install-plugin.version>2.5.2</maven-install-plugin.version> 

    <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version> 
    <!--<maven-surefire-plugin.version>2.12</maven-surefire-plugin.version> --> 
    <skipTests>false</skipTests> 
    <sometest>src/test/resources/testngxmls/sometest/test1.xml</sometest> 
    <smoketest>src/test/resources/testngxmls/smoketest/test2.xml</smoketest> 


</properties> 


<build> 
    <!-- <sourceDirectory>src</sourceDirectory> --> 
    <plugins> 

    <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven.compiler.plugin.version}</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin>    

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>${maven.jar.plugin.version}</version> 
      <inherited>true</inherited> 
      <executions> 
       <execution> 
        <goals> 
         <goal>test-jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-install-plugin</artifactId> 
      <version>${maven-install-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>default-install</id> 
        <phase>install</phase> 
        <goals> 
         <goal>install</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>${maven-surefire-plugin.version}</version> 
      <configuration> 
       <skipTests>${skipTests}</skipTests> 
       <suiteXmlFiles> 
        <xmlFile>${sometest}</xmlFile> 
        <xmlFile>${smoketest}</xmlFile> 
       </suiteXmlFiles> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 

    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>${selenium.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>${testng.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.relevantcodes</groupId> 
     <artifactId>extentreports</artifactId> 
     <version>${relevantcodes.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>${poi.verison}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>${poi-ooxml.verison}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml-schemas</artifactId> 
     <version>${poi-ooxml-schemas.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-scratchpad</artifactId> 
     <version>${poi-scratchpad.version}</version> 
    </dependency> 

    <!--adding only required jars of AWS --> 

    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-lambda-java-core</artifactId> 
     <version>${aws-lambda-java-core.version}</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk-dynamodb</artifactId> 
     <version>${aws-java-sdk-dynamodb.version}</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.jayway.restassured</groupId> 
     <artifactId>rest-assured</artifactId> 
     <version>${rest-assured.verison}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.jayway.restassured</groupId> 
     <artifactId>json-path</artifactId> 
     <version>${json-path.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.jayway.restassured</groupId> 
     <artifactId>xml-path</artifactId> 
     <version>${xml-path.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.jayway.restassured</groupId> 
     <artifactId>json-schema-validator</artifactId> 
     <version>${json-schema-validator.verison}</version> 
     <!-- <scope>test</scope> --> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.opencsv</groupId> 
     <artifactId>opencsv</artifactId> 
     <version>${opencsv}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson-databind.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>${json.version}</version> 
    </dependency> 

    <dependency> 

     <groupId>com.google.inject</groupId> 
     <artifactId>guice</artifactId> 
     <version>3.0</version> 
    </dependency> 

    <!-- <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-text</artifactId> 
     <version>1.1</version> 
    </dependency> --> 
</dependencies> 

<repositories> 
    <repository> 
     <id>sonatype</id> 
     <url>https://oss.sonatype.org/content/repositories/snapshots/</url> 
     <snapshots /> 
    </repository> 
</repositories> 

を次のようにポンポンが見えます。私は選択されたスイートを独立して実行するためにmvnコマンドラインを使用しようとしていましたが、すべてのsuiteXmlFilesを実行し続けます。私が使用したコマンドは以下の通りです:

私はこのコマンドを実行すると$ mvn -e clean test -Dsurefire.xmlFile=sometestが実行されます。それはsometest suiteを実行してからsmoketestですべてのテストを実行します。以下に挙げるすべてのコマンドで同様の観察。

$ mvn -e clean test -Dsurefire.xmlFiles=sometest

私もsuiteXmlFileとファイルタグにXMLFILEを変更し、それぞれのコマンドを実行しようとしている:

$ mvn -e clean test -Dsurefire.suiteXmlFile=sometest $ mvn -e clean test -Dsurefire.suiteXmlFiles=sometest

$ mvn -e clean test -Dsurefire.suiteXmlFile=sometest $ mvn -e clean test -Dsurefire.suiteXmlFiles=sometest

は、これらのテストを実行することができます方法はあります独立してsuiteXmlFilesに固執します。これは簡単な機能のように見えますが、なぜこれを実行して実行するのが難しいのだろうと困惑しています。

+0

あなたはsometestと私はそれを行うことができる知っているsmoketest – nayakam

+0

@nayakam用に別のプロファイルを作成することができ、しかし、これは非常に簡単な特徴のように思えるし、私はこれが働かない理由を知りたいと思います。私が間違っている根本的なことがありますか? –

+0

http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#suiteXmlFiles 2.2より上のバージョンで試してください。 HTH – nayakam

答えて

1

testng-6.13.1とmaven-surefire-plugin 2.20で問題なく動作しているようです。アーティファクトバージョンを確認するか、Dsurefire.suiteXmlFileオプションに正しいファイルパスを渡す必要があります。

MVNコマンド:テスト・スイート1

mvn test -Dsurefire.suiteXmlFiles=src/test/resources/testXml1.xml 

出力:

[INFO] Running TestSuite 
This is TestNG-Test-Suite-First Example 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.345 s - in TestSuite 
[INFO] 
[INFO] Results: 
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 

MVNコマンド:テスト・スイート2用

mvn test -Dsurefire.suiteXmlFiles=src/test/resources/testXml2.xml 

出力:

[INFO] ------------------------------------------------------- 
[INFO] T E S T S 
[INFO] ------------------------------------------------------- 
[INFO] Running TestSuite 
@BeforeTest 
This is TestNG-Test-Suite-Second Example 
@AfterTest 

[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.399 s - in TestSuite 
[INFO] 

プロジェクトの設定

のpom.xml

<dependencies> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.13.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.1</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.20</version> 
        <configuration> 
         <suiteXmlFiles> 
          <suiteXmlFile>src/test/resources/testXmlAll.xml</suiteXmlFile> 
          <suiteXmlFile>src/test/resources/testXml1.xml</suiteXmlFile> 
          <suiteXmlFile>src/test/resources/testXml2.xml</suiteXmlFile> 
         </suiteXmlFiles> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

testXml1.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="test1"> 
    <test name="test1"> 
     <classes> 
      <class name="TestNgSuiteFirstTest"/> 
     </classes> 
    </test> 
</suite> 

testXml2。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="test2"> 
    <test name="test2"> 
     <classes> 
      <class name="TestNgSuiteSecondTest"/> 
     </classes> 
    </test> 
</suite> 

XMLこれは、各スイートのファイルを指すようにパラメータとして

設定プロパティ変数をスーツのファイルを渡すだけの回避策であるパラメータ

としてスイートファイルを渡します。

<properties> 
    <test1SuiteFile>${project.basedir}/src/test/resources/testXml1.xml</test1SuiteFile> 
     <test2SuiteFile>${project.basedir}/src/test/resources/testXml2.xml</test2SuiteFile> 
     <!-- Default suites --> 
     <testAllSuiteFile>${project.basedir}/src/test/resources/testXmlAll.xml</testAllSuiteFile> 
     <suiteFile>${testAllSuiteFile}</suiteFile> 
    </properties> 

アップデートプラグイン:

<configuration> 
    <suiteXmlFiles> 
      <suiteXmlFile>${suiteFile}</suiteXmlFile> 
     </suiteXmlFiles> 
    </configuration> 

mvn clean test 
mvn test -DsuiteFile=${test2SuiteFile} 
mvn test -DsuiteFile=${test1SuiteFile},${test2SuiteFile} 

は、そうでない場合は、次のような構成を定義し、1つのファイルを渡すコマンドラインでパラメータとしてファイル名を渡します。

mvn test -DsuiteFile=testXml1.xml 

    <configuration> 
      <suiteXmlFile>${project.basedir}/src/test/resources/${suiteFile} 
          </suiteXmlFile> 
    </suiteXmlFiles> 
</configuration> 
+0

奇妙なことに、完全にxmlファイルのパスをハードコードすると問題なく動作しているようです。しかし、を使用してパラメータ設定すると、動作しないようです。たとえば、pom.xmlを使用してsuiteXmlFiles値のパラメータ化されたプロパティ値を使用し、suitnameを使用してmvnコマンドを実行すると、同じ問題が発生します。 –

+0

スイートファイルをパラメータとして渡すよう更新されました。 – nayakam

+0

には、すべてのパラメータ値が含まれていると仮定されていますか、$ {suiteFile}のみであり、testXmlAllと他のxmlの内容はどのように見えますか?私はあなたが言ったことに従ってみましたが、それはまだ動作していません。 xmlファイルの内容を含むコードの正確な状態を反映するようにコメントを更新できますか? –

関連する問題