main メソッドを使用して java/.net クラスをテストすることをお勧めしますか?
一部の教科書で推奨されているのを見たことがありますが、ユニットテストフレームワークを使用する方が理にかなっているように思えます...
main メソッドは、クラスへの 1 つのエントリ ポイントを提供し、クラスの機能の 1 つの側面をテストできます。多くのことをテストできると思いますが、Junit や Nunit を使用するほど意味がないようです。
main メソッドを使用して java/.net クラスをテストすることをお勧めしますか?
一部の教科書で推奨されているのを見たことがありますが、ユニットテストフレームワークを使用する方が理にかなっているように思えます...
main メソッドは、クラスへの 1 つのエントリ ポイントを提供し、クラスの機能の 1 つの側面をテストできます。多くのことをテストできると思いますが、Junit や Nunit を使用するほど意味がないようです。
明白な利点の 1 つは、クラスをホワイトボックス テストできることです。つまり、その内部をテストできます (たとえば、プライベート メソッド)。単体テストではそれを行うことはできませんし、したくもありません。それらは主に、ユーザーの観点からインターフェイスと動作をテストするために存在します。
テスト ランナーのように、統合テストのスイートをテストするメイン メソッドから呼び出される統合テストを開発すると便利だと思います。単体テスト フレームワークはこれを行うためのはるかに優れたメカニズムを提供するため、この方法で単体テストを行うことはありません。
[編集] 明確にするために、各クラスに統合テストに使用する static main メソッドがあることを提案しているのではなく、一連の統合テストを実行する静的 main メソッドを使用して統合テスト プログラムを作成できることをお勧めします。
Javaでは、複数のメインメソッドを使用してテストに使用することが認められていますが、.NETではこれを許可していません。同じプログラムに2つのメインがある場合、コンパイラエラーCS0017が発生し、次のように通知されます。Compile with /main to specify the type that contains the entry point.
私はJavaの方法が私にとってより理にかなっていると言わなければなりません。
main メソッドは特定の状況で役立つ場合がありますが、デバッガーを使用してから単体テストを作成する (リグレッションに対する保険を提供する) 方が、より堅牢なソリューションです。