この質問はベストプラクティスアプローチの詳細です。私たちが持っているアプリケーションは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スクリプトを作成することは可能ですか?
私は今夜試してみるつもりです。私が直面している最大の課題は、開発者がローカルで「ビルド」や「テスト」タスクを実行しているときに、これらの特定のユニットテストを除外したい場合です。この方法を使用すると、個別にタスクを実行できます。 –
これは実用的な解決策です、ありがとうございます。 –