統合テストを開発するには、Autofacとmoqを使用することをお勧めしますか? 私がオンラインで見つけたサンプルとドキュメントのほとんどは、ユニットテストでこの2つを使用することに焦点を当てています。統合テストの良い例は? 統合テストでは、ボタンアップ、トップダウン、またはサンドイッチのようなアプローチを意味します。AutofacとMoqを使用した統合テスト
答えて
統合テストの意味を定義することをお勧めします。なぜなら、用語には受け入れられた定義がないからです。アプリケーション全体を単独でテストすること、つまり複数のクラス(おそらく数百ものクラス)を一緒にテストすることを想定していますが、外部システム(データベース、httpサービスなど)とはやり取りしないでください。
何らかの依存性注入やコントロールの逆転をプロジェクトに導入することをお勧めします。 Autofacやその他のソリューションを使用する場合でも、統合テストの利点は同じです。依存性注入により、外部世界と通信するシステムのビットを置き換えることができます。あなたのDAOは、メモリ内で動作するモックまたはスタブバージョンを使用しています。たとえば、実稼働環境では、おそらく外部のMSSQLデータベースを使用するDAOを使用しますが、統合テストではおそらくメモリ内のDictionaryまたはHashMapを使用するスタブDAOを使用します。
Moqについては、Moqを統合テストに使用することはお勧めしません。単体テストは非常に小さな領域をシステムでテストし、モックオブジェクトとのやりとりはしばしば単純です(そうでない場合は単体テストをリファクタリングする必要があります)。しかし、統合テストでは、システム全体をテストしているため、模擬しようとしているオブジェクトとのインタラクションがたくさんある可能性があります。さらに、システムが変わると、結果が同じままであっても、モックとのやりとりが変わる可能性があります。多くの場合、多くのメソッド呼び出しを設定する必要があるため、統合テストのためのモックを設定し維持することは非常に困難で面倒です。
さらに、統合テストはマルチスレッド化されている可能性があり、必ずしも同じ順序で起こるとは限りません。再び、模擬するのは難しい!
統合テストのより良いアプローチは、実際にオブジェクトのインメモリバージョンを実装することです。それは実際のものに可能な限り近づくべきです。おそらく、初期状態の設定(DAOの例では、いくつかのテストデータの設定)や出力の検査などの作業を行うために、メモリー実装でこれに追加のメソッドを追加する必要があります。統合テストの基盤が成長するにつれて、これはずっと柔軟になっています。
明らかに、私はMoqが単体テストでは非常に有用であり、統合テストではないと思います。
- 1. ユニットテストHttpResponseMessage(AutofacとMoqを使用)
- 2. MoqとAutofacを使ったユニットテスト
- 3. AuthorizeAttributeを使用したMVC統合テスト
- 4. 統合テストを使用したsbtアセンブリ
- 5. セッションストアを使用したRails統合テスト
- 6. restTemplateを使用した統合テストsleuth
- 7. autofac、ASP.NET統合、Dispose
- 8. NUnitとMoqを使用したNullReferenceテスト制御コントローラ
- 9. Autofac MVCとASP.Net MVC 4の統合
- 10. 統合テスト用データアクセスコード
- 11. gradleを使用したJHipster統合テストをスキップ
- 12. .NETコアでIOptions <>を使用した統合テスト
- 13. Test Doubleを使用したFeignClientの統合テスト
- 14. Spring Controller統合TestNgを使用したテスト
- 15. Ember統合テスト+リレーションシップ+ ember-deferred-contentアドオンを使用したモックモデル
- 16. 擬似サービス/コンポーネントを使用した春のブート統合のテスト
- 17. Postgres、Npgsql、およびロールバックを使用した統合テスト
- 18. Visual Studio 2013でHttpClientを使用したユニットテスト/統合テストWeb API
- 19. 属性を使用したWeb APIアクションの統合テスト戦略
- 20. SOAP UIを使用したOSB統合テスト
- 21. asp.net mvcを使用した受け入れ/統合テスト
- 22. devises gemを使ったRails統合テスト
- 23. ユニットと統合テスト
- 24. Fix Frameworkを使用しないPlay Frameworkとの統合テスト
- 25. Autofacを使用したIdentityServer3
- 26. VBでMoqを使用した単体テストでの式
- 27. 統合テストでのIMapperの使用
- 28. moqを使ったリポジトリクエリのテスト
- 29. autofac、ASP.NET統合、およびHttpRequestScoped
- 30. 「きれいな」統合テストの作成 - ジャージー2とスプリングを使用したREST
統合テストにmoqが必要なのはなぜですか?なぜユニットテストのためにオートファックが必要でしょうか? –
私の質問を最初に読んでください、私はAutofacかMoqのいずれかが必要であることについて何も書いていませんでした、私はそれが統合テスト目的のためにそれらを使用して報われば助言を求めています。 – Mindan