Spring-bootアプリケーションのメインクラスをテストする方法
質問
私は
spring-boot
アプリケーションで
@SpringBootApplication
スタータークラスは標準的なもののように見えます。そこで、私はすべての機能に対して多くのテストを作成し、その要約を
ソナクベ
に送信して、カバレッジを確認しました。
私のスタータークラスでは、Sonarqubeは私のカバレッジが60%しかないことを教えてくれました。つまり、平均的なカバレッジは期待したほど良くはありません。
私のTestクラスは、デフォルトのものだけです。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ElectronicGiftcardServiceApplication.class)
public class ElectronicGiftcardServiceApplicationTests {
@Test
public void contextLoads() {
}
}
では、アプリケーションのスタータークラスでメインクラスをテストするにはどうすればよいでしょうか。
どのように解決するのですか?
どれもやりすぎのような気がするのですが。
メトリックツールを満足させるためにテストを追加することはないでしょう。
アプリケーションのSpringコンテキストを読み込む
時間がかかる
. アプリケーションのカバレッジの0.1%を獲得するためだけに、開発者用ビルドのたびに追加するのはやめましょう。
ここで
1つの文だけをカバーするのではありません。
を1つのパブリックメソッドから取得します。というアプリケーションでは、カバレッジの点では何の意味もありません。
何千ものステートメントが一般に書かれるアプリケーションでは
.
最初の回避策:内部でBeanが宣言されていないSpring Bootアプリケーションクラスを作成します。もし、Beanがある場合は、それらを設定クラスに移動します(ユニットテストでカバーできるようにするため)。そして、Spring Bootのアプリケーションクラスを無視して テストカバレッジ設定
2つ目の回避策 : もし本当に
main()
の呼び出しをカバーする必要がある場合 (たとえば組織的な理由)、そのためのテストを作成しますが、統合テスト (継続的インテグレーションツールによって実行され、各開発者ビルドでは実行されない) とし、テストクラスの目的を明確に文書化します。
import org.junit.Test;
// Test class added ONLY to cover main() invocation not covered by application tests.
public class MyApplicationIT {
@Test
public void main() {
MyApplication.main(new String[] {});
}
}
関連
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
無効なメソッド宣言
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
Junitのユニットテストエラー
-
Java:未解決コンパイル問題の解決方法
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Spring Bootアプリケーションにポートを設定する方法
-
[解決済み】JpaTestを行う際に@SpringBootConfigurationを見つけることができない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
javaの非静的メソッドを静的に参照することができない
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
Javaジェネリックを1つの記事で
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
テストが空であるかどうかを判断するためのオプションの処理
-
switch case文のcaseの後の列挙定数は列挙型なし
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
ApiModel と @ApiModelProperty の使用法