VS2010を使用してC#でファイルI / O操作の単体テストを実行できますか?単体テストはデータレイヤーにアクセスするのに効率的ではないため、単体テスト操作を行う必要がありますか、それともそのための模擬または偽の操作がありますか?
3 に答える
ファイルI/Oを検証する単体テストのようなものを書くことができますか?絶対。
しかし、おそらくそうすべきではありません。
ユニットテストを非常に高速にし、外部依存関係をできるだけ少なくする必要があります。ファイルIOは(比較的)非常に遅く、ファイルシステムに関する多くの詳細に依存します。
単体テスト内では、コードがWrite操作を正常に呼び出したか、.Close()メソッドを呼び出したことだけを気にするでしょう。その動作を単体テストできます。
アプリケーションがファイルシステムと正しく相互作用することを本当にテストしたい場合、質問は統合テストまたはエンドツーエンドテストに関するものになります。ただし、単体テストではありません。
ファイルシステムまたは別のシステムに実際にアクセスする必要がある場合、ここでは統合テストについて詳しく説明しています。
単体テストでこのようなものをモックする必要がある場合は、たとえばユニティと「モック」ファイル システムを使用して依存性注入を使用する必要があります。
以下は、ファイル システムをモックするコードを探すのに適した場所です。
http://systemwrapper.codeplex.com/
http://systemwrapper.codeplex.com/
モッキングに関する一般的な情報 ...
http://martinfowler.com/articles/mocksArentStubs.html#ClassicalAndMockistTesting
そして、次のリンクは、ユニティで依存性注入を使用する方法を示しています...
http://www.codeproject.com/Articles/254091/Implementing-Microsoft-Unity-Design-Pattern
敬具
マシュー・ジーロンカ
これは何を意味するのでしょうか?あなたが達成しようとしていることについて詳しく教えてください。単体テストでは、依存関係をできるだけ少なくして、明確で簡潔な責任を持つ、明確に定義された単体のみをテストする必要があります。ファイル システムやデータベースなどへの参照が必要な操作は決してテストしないでください。そのような場合には、モック/スタブを使用してください。
モックのコレクションは次のとおりです: https://stackoverflow.com/questions/37359/what-c -sharp-mocking-framework-to-use