[解決済み] assert vs. JUnitアサーション
2023-04-19 14:56:09
質問
今日、JUnitのテストケースで、JUnitのアサーションの代わりにJavaのアサーションが使われているのを見ましたが、どちらを選ぶべきか、大きなメリットとデメリットがありますか?
どのように解決するのですか?
JUnit4では、JUnitのassertが投げる例外(実際にはError)は、javaの
assert
キーワード (AssertionError) によってスローされるエラーと同じであるため、これはまさに
assertTrue
と同じで、スタックトレース以外では違いが分かりません。
とはいえ、アサートはJVMの特別なフラグで実行しなければならず、JUnitテストが実行されたときに誰かがそのフラグでシステムを構成するのを忘れたために、多くのテストがパスしたように見えることがあります - 良くないことです。
一般に、このような理由から、私はJUnitの
assertTrue
を使う方が良いと主張します。なぜなら、テストが実行されることが保証され、一貫性が保たれるからです (時々
assertThat
やJavaキーワードではない他のアサートを使用することがあります)、将来的にJUnitアサートの動作が変更された場合(ある種のフィルタや他の将来のJUnit機能にフックするなど)、あなたのコードはそれを活用することができるようになります。
javaにおけるassertキーワードの本当の目的は、実行時のペナルティなしにそれをオフにできるようにすることです。それはユニットテストには適用されません。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] Java の assert キーワードは何をするのか、そしていつ使うべきなのか?
-
[解決済み] Mavenが実行するJUnitテストを見つけ出せない
-
[解決済み] JUnit Testアノテーションを使用して例外メッセージをアサートするにはどうすればよいですか?
-
[解決済み】Loggerのメッセージに対してJUnitアサートを行う方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Javaジェネリックを1つの記事で
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Java基礎編 - オブジェクト指向
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
アクセス制限の解決方法: ---- in Java
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題