7

私のコードには、高速ユニット テスト低速パフォーマンス テストの 2 種類のテストがあります。ユーザーが明示的に実行したい場合 (たとえば、適切なテスト スイートまたは Maven ビルド プロファイルを使用) を除き、パフォーマンス テストが実行されないようにしています。

このサイトで説明されているように、maven-surefire-plugin を使用して特定のテストを除外 (または含める) ビルド プロファイルを作成する方法を理解しています。ただし、必要に応じてテストを実行するオプションを提供しながら、デフォルトの実行からテストを除外する方法が見つからないという問題があります。デフォルトで実行すると、次のようになります。

  • Eclipse でプロジェクトを右クリックし、「run as | Maven test」を選択します。
  • src/test/java を右クリックし、junit テストとして実行を選択します

上記の両方のケースで、すべての単体テストを実行します (デフォルトで除外したい遅いテストを含めます)。実行しようとしているビルド プロファイルにタイプミスがあると、同じことが起こります。

パフォーマンス テストを別の Maven モジュールに移動せずに、デフォルトの実行から除外する方法はありますか?

4

3 に答える 3

2

私たちのプロジェクトで行ったことは、遅い単体テストを特別なマーカー インターフェイスでマークすることです。 @Cathegory(SlowTest.class)注釈を付けて、それらをフェイルセーフ プラグインに追加します。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-failsafe-plugin</artifactId>
   <configuration>
       <groups>com.whatever.SlowTest</groups>
   </configuration>
    <executions>
      <execution>
        <configuration>
            <includes>
                <include>**/*.class</include>
            </includes>
        </configuration>
        <goals>
            <goal>integration-test</goal>
            </goals>
    </execution>
</executions>

それらを実行したくない場合: maven オプション -DskipITs を使用します。これはそれらをスキップします。

于 2013-03-19T17:01:08.740 に答える
1

を使用profilesすると、遅いテストを除外するデフォルトで 1 つをアクティブにし、別のものを使用してすべてのテストを実行できます。

fastTestOnlyプロファイルでこれらのタグを指定する必要があります:

<profiles>
  <profile>
    <id>fastTestOnly</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    ...
  </profile>
</profiles>

mvn installこのように、単純なプロファイルのみを実行すると、選択されたプロファイルはfastTestOnly.

于 2013-03-19T16:30:33.077 に答える