私の講師は以前これを言いましたが、なぜこれが当てはまるのか本当に分かりません。誰でも説明できるでしょうか?JUnitでユニットテストされているクラスにメインがないのはなぜですか?
私たちは、素数の配列リストを計算するプログラムを作成している、と私たちは、このArrayListのすべてのメンバーが素数であることを確認するためのJUnitを使用する必要があります。このクラスのテストでメインを使用できないのはなぜですか?
はどうもありがとうございました:)
私の講師は以前これを言いましたが、なぜこれが当てはまるのか本当に分かりません。誰でも説明できるでしょうか?JUnitでユニットテストされているクラスにメインがないのはなぜですか?
私たちは、素数の配列リストを計算するプログラムを作成している、と私たちは、このArrayListのすべてのメンバーが素数であることを確認するためのJUnitを使用する必要があります。このクラスのテストでメインを使用できないのはなぜですか?
はどうもありがとうございました:)
[OK]これらの回答は、ほとんどが複雑すぎます。私はあなたの質問がより根本的だと思う。あなたがJava開発者になり、時間の経過とともに更新/修正された大量のコードを書き始めたら、自動的にテストを実行する別々のテストプラグインを持つことに役立ちます。コードの外にあるあなたのコードが、あなたが期待する方法でまだ動作しているかどうかをチェックしてください。これは、何らかの理由でコードのさまざまな部分を修正/デバッグできることを意味します。その後、上司が歩み寄り、コードが依然としてクライアントが修正後に実行したがっていることを依頼していますか?複雑なことなしに、通常のプログラム出力と混ざり合っている複雑なメインエラーステートメント(非テスト条件ではコードを遅くする)を使わずに、彼に答えられます。大規模なプロジェクトを開発し、何百ものテストを行うまで、この価値はわかりません。さらに、ジュニットは、袖の上に多くの他のトリックを持っています...
をユニットテストでは、あなたが全体として何をテストされていません。単体テストはUNITを通常はテストする必要があります。したがって、配列を計算するメソッドを記述し、メソッドをテストするためにJunitを使用する必要があります。
主な方法は、単にエントリポイントであり、それは処理の流れを「定義します」。ユニットテストでは、フローについて心配しません。私たちは単なるユニットのためのものです。プログラムフローは、ユニットテストではなく、システム/コンポーネントテストを使用して検証されます。
JUnitテストは、標準のコンソールアプリケーションではなく、フレームワークによって実行されるためです。
JUnitテストランナーは、リフレクションによってテストを見つけます。
は、ドキュメントhereを参照してください。
JUnitは、あなたのクラスで提供する関数を呼び出すmain
を提供しているため。あなたはまだ独自のmain
機能を持つことができます。彼らはあなたがJUnitを走らせるときには使用されません。 main
関数を使用して独自のクラスを個別にテストすることができますが、JUnitを使用するとorg.life.javaの答えに説明されているような利点があります。
お勧めできません。テスト用の単体テストを作成する場合は、junitテストランナーを使用してテストを実行し、合格または不合格のいずれかを示すレポートを生成できます。これをしないと、独自のレポートメカニズムをコーディングする必要があります。
単体テストは、通常、以下の構造を有する:
を通過した実行テストインフラ
ユニットテストのAPIの利用可能あなたは通常、自分でコーディングする必要があります便利なユーティリティを提供します。
あなたは両方の方法を試してみてください。
参照:org.junit.runner.JUnitCore.main(String...)
、そのようなものが根底にあります。
+1 - 'main'がありますが、テストランナーは実行中のアプリケーションで、テストクラスとテスト対象クラスは一種の"ペイロード "です。 –