1

mvn failsafe プラグインを使用して、セレン テストのみを実行しようとしています。セレン テストのみを実行する別のプロファイルを作成しましたが、mvn はそれらを見つけることができません。私のプロジェクト構造は次のようになります

moduleA
  scr/main/...
  src/test/integration/java/...
  scr/test/unit/java/...    

moduleB
  scr/main/...
  src/test/integration/java/...
  scr/test/unit/java/...

moduleC (only for selenium tests)
  scr/main/java/com/selenium/A.java
  src/test/java/...

moduleA と B に単体テストと統合テスト用の新しいディレクトリがあるので、pom.xml (listingB) で次のように定義して、Maven に追加のテスト ディレクトリを知らせます。これまでのところは問題ありませんが、moduleC にセレン テストを追加して、セレン テストを実行していないセレンのみを実行したい場合。Selenium テストを実行するために、新しいプロファイル (listingA) を作成しました。どんな助けでも大歓迎です。

リスティングA:

<profiles>
  <profile>
    <id>selenium</id>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <executions>
            <execution>
              <id>verify</id>
              <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <includes>
              <include>**/selenium/*.java</include>
            </includes>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

リスト B:

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <id>add-test-source</id>
        <phase>generate-test-sources</phase>
        <goals>
          <goal>add-test-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>${basedir}/src/test/unit/java</source>
            <source>${basedir}/src/test/integration/java</source>
            <source>${basedir}/src/test/common/java</source>
          </sources>
        </configuration>
      </execution>
      <execution>
        <id>add-test-resource</id>
        <phase>generate-test-resources</phase>
        <goals>
          <goal>add-test-resource</goal>
        </goals>
        <configuration>
          <resources>
            <resource>
              <directory>${basedir}/src/test/integration/resources</directory>
              <directory>${basedir}/src/test/unit/resources</directory>
              <directory>${basedir}/src/test/common/resources</directory>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>
4

2 に答える 2

3

最初に頭に浮かんだのは、別のフォルダーを使用して単体テストと統合テストを分離している理由です。Maven では、単体テストと統合テストの分離は命名規則によって行われます。

単体テストには次のような名前を付ける必要があります

**/Test*.java
**/*Test.java
**/*TestCase.java

統合テストには、次のような名前を付ける必要があります。

**/IT*.java
**/*IT.java
**/*ITCase.java

つまり、統合テストと単体テストをsrc/test/javaという同じフォルダーに問題なく配置できます。統合テストの実行は、これによる影響を受けません。

あなたが電話するなら

mvn clean package

単体テストのみが実行されます。統合テストも実行する必要がある場合は、次を使用できます。

mvn verify

単体テストをスキップしたくない場合は、次を使用できます。

mvn -DskipTests=true 検証

作成した別のセレン モジュールの最適な解決策は、統合テストを通常のフォルダーsrc/test/javaに適切な命名規則で配置することです。

問題は、統合テストに特別なリソースが必要な場合に、それらの統合テストを統合テストのみの別のモジュールに移動する可能性があることです。

于 2013-01-31T08:49:58.957 に答える
0
  1. Selenium テストがsrc/test/javaフォルダーにある場合は、listingA<includes>の構成からパラメーターを削除します。maven-failsafe-plugin

  2. Selenium テスト クラスに次のような名前を付けます。

      **/IT*.java
      **/*IT.java
      **/*ITCase.java
    

    khmarbaiseが示唆したように)

  3. Failsafe は Surefire を使用して統合テストを実行するため、Selenium テスト クラスに次のような名前を付けないでください。

    **/Test*.java
    **/*Test.java
    **/*TestCase.java
    

    これにより、計画どおりに統合テストではなくテスト段階で実行されるためです。

私はあなたと同様の構成を持っており、動作します。

于 2013-02-06T16:44:50.627 に答える