2017-07-20 6 views
0

この質問はベストプラクティスアプローチの詳細です。私たちが持っているアプリケーションはSpring Boot 1.5.4で、Gradleを使ってビルドしています。私はジェンキンスと一緒に夜間のビルドを作成する過程にあり、すべての単体テストがプロジェクトに確実に通っていることを確認したい。開発者はのオフ動作させるためにSpring/JUnit - 本当に "テスト"ではないユニットテストを実行する

@SpringBootTest(classes = {Application.class}) 
@RunWith(SpringRunner.class) 
public class DatabaseCreationProcessImplTest { 

この特定のクラスは、サンプル・データベース・イメージを作成します。

プロジェクトは、しかし、このような「テスト」の数を持っています。 SQLスクリプトを直接作成することはできますが、外部のソースからのデータも照会するコードがあるのでJavaプロセスが便利です(例:Liferay)

開発者が簡単にユニットテストを行う理由は、 IntelliJで実行して、新しいデータベースイメージを読み込みます。しかし、これは実際には「テスト」ではなく、Javaプロセスを実行するための迅速な方法としてテストランナーを使用しています。

夜間ビルドの設定に取り組んでいます。このテストをビルドに含めないようにしています。しかし、これを行うことで、春のテストランナーとIDE内で個別にユニットテストを実行している場合、任意のテストを見つけることができません

test { 
exclude 'com/mydomain/service/util/impl/DatabaseCreationProcessImplTest.class' 
} 

:私は、ビルドスクリプトで、次のような何かを行うことができます。私はこれを行うためにJenkinsのタスクでブール値を渡すことを考えました。

test { 
    systemProperties 'property': 'value' 
    testLogging { 
     events "passed", "skipped", "failed", "standardOut", "standardError" 
    } 

    // Exclusions go here 
    if (Boolean.getBoolean('exclude.tests')) { 
     exclude 'com/mydomain/service/util/impl/DatabaseCreationProcessImplTest.class' 
    } 
} 

は、しかし、これは任意の方法は、これを処理するためのいくつかの「ベストプラクティス」のアプローチを探してい...ハック/その場しのぎのように思えます。 JUnitはJavaプロセスを迅速に実行するための正しい方法ですか?他の選択肢はありますか?開発者が一般的なJava(Spring Boot)プロセスを呼び出すために使用できるGradleスクリプトを作成することは可能ですか?

答えて

1

:その後、

@Suite.SuiteClasses(DatabaseCreationProcessImplTest.class) 
public class NotReallyTests {} 

そしてない、本当に除外するように、あなたのジェンキンスのコマンドラインから渡す条件を使用しますスイート-tests:

test { 
    if (project.hasProperty('excludeNotReallyTests')) { 
     useJunit { 
      excludeCategories 'fully.qualified.name.of.your.NotReallyTests' 
     } 
    } 
} 

あなたのジェンキンスコマンドラインは次のようになり

$ gradle -PexcludeNotReallyTests=true 

build.gradleファイルではなく、コードベースで実際にテストされていないテストのグループ化を追跡するという点で、ソリューションより少し面倒です。

+0

私は今夜試してみるつもりです。私が直面している最大の課題は、開発者がローカルで「ビルド」や「テスト」タスクを実行しているときに、これらの特定のユニットテストを除外したい場合です。この方法を使用すると、個別にタスクを実行できます。 –

+0

これは実用的な解決策です、ありがとうございます。 –

0

Android用テストAPIには、複数のテストをまとめてグループ化するためのアノテーションが用意されています。次に、コマンドラインで注釈の1つを指定して、実行するテストを指定することができます。私はこれを実装する方法の詳細を知らない。あなたが興味を持っているのであれば、あなた自身で探索することは単なる示唆です。

私はあなたがグループのJUnitの @SuiteClasses注釈付きテストスイートでのごない-本当に-テストができると思い
関連する問題