単体テストを作成するのは初めてなので、DAO の単体テストを作成する方法への参照を見つけようとしています。setUpBeforeClass
、 、の簡単な例を教えてsetUp
くださいhow to test a method that inserting new data in database using model for this
。簡単なモックを使用した簡単な例です。ご検討をお願いいたします
1 に答える
単体テストを実行するためにモック オブジェクトを使用するというアイデアは、実際のオブジェクトではなくモック オブジェクトをテストするだけなので、奇妙に思えます。データベース アクセスをエミュレートするためにモック オブジェクトを使用する必要があると思われる場合は、アーキテクチャ全体が間違っています。私は個人的にすべてのソフトウェアを 3 層アーキテクチャを使用して構築しています。このアーキテクチャでは、ビジネス レイヤーに好きなだけオブジェクトを配置できますが、データ アクセス レイヤーには 1 つのオブジェクトしか配置できません。したがって、実際のデータベースへのアクセスをダミーのデータベースへのアクセスと交換したい場合、どこを変更すればよいでしょうか? ビジネス レイヤの 200 以上のオブジェクトすべてですか、それともデータ アクセス レイヤの 1 つのオブジェクトだけですか? アプリケーション内のすべてのオブジェクトを変更するメカニズムを実装する必要があるのはなぜですか?
コントローラーは、単体テストではなく、統合テストを行うことを目的としています。しかし、テスト ピラミッドでは、ユニット レベルに焦点を当てる必要があると規定されているため、デフォルトではユニット レベルに夢中になります。
アサーションは、どのような状況でも失敗することはありません。テストで失敗した場合は、論理エラーを示しています。基本的に、関数がエラー コードを返す代わりに「assert( 0 )」を実行している場合は、関数を書き直す必要があります。
クラスのオブジェクトを使用するコードに影響を与えることなく、クラス定義に大規模な変更を加えることができますか? すべてを捨てて、まったく異なる実装に置き換えることさえできますか?
残念なことに、Java のような厳格な言語に由来するさまざまなパターンで発生したように、依存性注入は広まり、柔軟性と可鍛性の利点をごまかす言語間のベスト プラクティスとして提唱されてきました。
参考文献