[解決済み] なぜテストにJUnitを使うのか?
疑問点
初歩的な質問かもしれませんが、どのような状況で junit ?
シンプルなアプリケーションを書く場合でも、より大きなアプリケーションを書く場合でも、私はそれらを
System.out
ステートメントでテストしています。
JUnitでテストクラスを作成し、プロジェクト内に不要なフォルダを作成し、それでも同じメソッドを呼び出し、それらが返すものをチェックしなければならず、さらにすべてにアノテーションを付けるというオーバーヘッドがあるのはなぜでしょうか?
なぜクラスを書いて
System.out
でテストすればいいのに、Test-classを作らないのはなぜ?
PS. 私は大規模なプロジェクトに取り組んだことがありません、私はちょうど学んでいます。
では、目的は何なのでしょうか?
どのように解決するのか?
それはテストではなく、quot;looking manually at output" (業界では LMAO と呼ばれています)です。より正式には、「異常な出力を手動で探す」(LMFAO) といいます。 (以下の注を参照)
コードを変更するときはいつでも、アプリを実行し、それらの変更によって影響を受けるすべてのコードに対して LMFAO を行う必要があります。小さなプロジェクトであっても、これは問題であり、エラーが発生しやすいものです。
今度は 50k、250k、1m LOC またはそれ以上にスケールアップして、コードを変更するときはいつでも LMFAO しなければなりません。不快なだけでなく、不可能です。入力、出力、フラグ、条件の組み合わせをスケールアップし、すべての可能な分岐を行使することは困難です。
さらに悪いことに、LMFAO は何ページもの Web アプリにアクセスし、レポートを実行し、何十ものファイルやマシンにまたがる何百万ものログ行に目を通し、生成および配信されたメールを読み、テキストメッセージをチェックし、ロボットのパスをチェックし、ソーダのボトルを入れ、100 の Web サービスからデータを集約し、金融取引の監査証跡をチェックする...ということを意味します。 出力とは数行のテキストではなく、集合体システムの挙動を意味するのです。
最後に、ユニットテストとビヘイビアテスト
を定義します。
システムの挙動を定義します。テストは継続的インテグレーション サーバーによって実行され、正しさをチェックすることができます。もちろん
System.out
しかし、CIサーバーはそれらのうちの1つが間違っているかどうかを知るつもりはありませんし、もしそうなら、それらはユニットテストであり、フレームワークを使う方がよいでしょう。
私たちがどんなに優秀だと思っていても、人間は優秀なユニットテストフレームワークやCIサーバーではありません。
注:LMAO は のテストをしていますが、その中で は非常に という限られた意味でのテストです。プロジェクト全体またはプロセスの一部として、意味のある方法で繰り返し行うことはできません。これは、REPL でインクリメンタルに開発しながらも、それらのインクリメンタルのテストを決して形式化しないことに似ています。
関連
-
javaでクラスを作成すると、enclosing classでないように見える
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] Mavenが実行するJUnitテストを見つけ出せない
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
java の例外が発生しました java
-
SpringBootApplication を型解決できない。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
Javaエラーメッセージがenclosingクラスでない
-
java 例外。Javaツールの初期化
-
JSPで「リストが型解決できない!」の解決方法