2

Mavenでいくつかの統合テストを実行し、次のようなものを使用してカテゴリ別にグループ化することを検討しています:

インターフェース:

package com.path.for.testing;

public interface SlowTests {

}

テスト クラス:

import com.path.for.testing.SlowTests

@Category(SlowTests.class)
public class SlowTest {
    ...
}

Pom ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  ...
  <profiles>
    ...
    <profile>
      <id>functional-test-slow-tests</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
      <plugins>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <executions>
            <execution>
              <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
              </goals>
              <configuration>
                <groups>com.path.for.testing.SlowTests</groups>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
      </build>
    </profile>
  </profiles>
</project>

そして、次のように実行します: mvn clean install -P Functional-test-slow-tests

私の問題は、実行すると、指定されたテストだけでなく、すべてのテストを循環しているように見えることです。分類は統合テストでは機能しませんか? それとも私は何か間違ったことをしていますか?リクエストに応じて、より多くの情報を更新します。この問題に関するヘルプや指示は本当にありがたいです。私はこれが初めてで、明らかな何かが欠けている可能性が非常に高いです。ありがとう。


User944849 に応じて編集します。

-X 引数を指定して実行すると、フェイルセーフ プラグインが複数回実行されていると思います。ご提案いただいた新しい実行 ID も追加しました。これは、プロジェクトがビルドされたときに得られるものです。

[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          org.apache.maven.plugins:maven-failsafe-plugin:2.12:integration-test (default-integration-tests)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>

...

[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          org.apache.maven.plugins:maven-failsafe-plugin:2.12:verify (default-integration-tests)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>

テストは提案された新しい ID を使用していますが、同じ結果が得られます。つまり、不要なテストがまだ実行されています。

4

1 に答える 1

2

で実行すると-X、フェイルセーフ プラグインが複数回実行されますか? 表示されている構成には が含まれていない<id>ため、Maven が構成済みの実行をデフォルトに追加している可能性があります。**/IT*.javaデフォルトでは、パターン、**/*IT.java、 に一致するすべてのテストが実行されます**/*ITCase.java

それが起こっている場合は、次の<id>ように実行に追加します。

<execution>
    <id>default-integration-tests</id>
    ....

統合テスト フェーズの Maven のデフォルト プラグイン実行を再定義して、必要なことを行います。


アップデート

@Brad、私の理論をテストしてくれてありがとう、@khmarbaiseは別のアイデアをくれてありがとう。

2 つのゴールの実行は、あなたが持つべきものです。あなたの設定に問題は見当たらないので、開いている JIRA でフェイルセーフ プラグインを確認したところ、間違った JUnit プロバイダーが使用される原因となっている可能性のある関連する問題が見つかりました。そのような場合は、ここで定義されているように、プラグイン構成で JUnit47 プロバイダーを手動で指定する必要がある場合があります。

于 2012-05-11T23:52:13.713 に答える