2

実行速度が非常に遅いテストがあります。たとえば、大規模なデータベースをエクスポートして、エクスポートするコードのメモリリークをテストするテストです。これらのテストを通常のテストスイートに入れたいのですが、次の条件のいずれかが満たされない限り、無視する必要があります。

  1. テストはCIサーバーで実行されています
  2. ユーザーがIDEでこのテストを選択し、実行しました

#1の解決策は簡単です。プロパティを使用し、設定されていない場合はテストをスキップします。

しかし、どうすれば#2を実装できますか?

[編集]これはJava固有です。EclipseでJUnit4を使用しています。

4

2 に答える 2

1

非常に低速で実行されるテストがあります。たとえば、大規模なデータベースをエクスポートして、エクスポート コードのメモリ リークをテストするテストです。

unit-test タグで示されているように、これらは便利ですが、単体テストではありません。

次の場合、テストは単体テストではありません。

  • データベースと通信します
  • ネットワークを介して通信します
  • ファイルシステムに触れる
  • 他の単体テストと同時に実行することはできません
  • それを実行するには、環境に対して特別なこと (構成ファイルの編集など) を行う必要があります。

これらのことを行うテストは悪くなく、確かに書く価値があります。単体テスト フレームワークを使用して記述することもできます。ただし、変更を加えるたびに高速に実行できる一連のテストを保持できるように、それらを実際の単体テストから分離できることが重要です。特に、失敗したテストから成功したテストに移行する TDD サイクルでは重要です。できるだけ早く。

を使用している場合は、真の単体テストのターゲットと、これらの遅いシステム テストMakefileのターゲットを持つことができます。checklivecheck

各テストを個別に実行する方法は、フレームワークによって異なります。

于 2010-10-08T12:59:02.650 に答える
1

そのために、Eclipse とうまく統合する Maven を使用します。JUnitを使用しています

  • Test単純に接頭辞または接尾辞が付けられ、完全なビルドごとに実行される単体テスト
  • 接頭辞が付いた統合テストIntegrationTest。これらは、特別な Maven プロファイルがコマンド ライン スイッチ (-PintegrationTests) によってアクティブ化された場合にのみ実行されます。

統合テストの完全なセットは、CI サーバーで 1 日 3 回実行されるか、上記のプロファイルを明示的に指定する開発者によって実行されます ( mvn test -PintegrationTests)。もちろん、プログラマーは IDE でいつでも単一の統合テストを実行できます。

これは からの関連部分ですpom.xml:

<profiles>
    <profile>
        <id>integrationTests</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                           <includes>
                                <include>**/Test*.java</include>
                                <include>**/*Test.java</include>
                                <include>**/IntegrationTest*.java</include>
                         </includes>
                      </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
于 2010-10-08T14:07:37.967 に答える