私は自分のコードを単体テストすることについてより良くしようとしていますが、今はリモートシステムを扱う多くのコードを書いています。 SNMP、WMIのようなものです。ほとんどのクラスでは、私はそれらをテストするためにオブジェクトをモックアップすることができますが、実際のシステムを単体テストする方法をどのように扱いますか?たとえば、私のクラスが外に出て、サーバーのWin32_LogicalDiskオブジェクトを取得した場合、どうすれば単体テストをテストできますか?あなたは「どのように私はあざけることは不可能/困難なものに対してテストします」意味と仮定すると、ネットワーク依存コードによるユニットテスト
答えて
:
あなたは「出て行き、サーバ用のWin32_LogicalDiskオブジェクトを取得します」と、何か他のものを(ないことクラスを持っている場合'Win32_LogicalDisk'オブジェクトを何らかの方法で消費します)、このオブジェクトを使用するクラスの部分をテストすると仮定すると、Dependency Injectionを使用して 'Win32_LogicalDisk'オブジェクトをモックできます。例えば:
class LogicalDiskConsumer(object):
def __init__(self, arg1, arg2, LogicalDiskFactory)
self.arg1=arg1
self.arg2=arg2
self.LogicalDisk=LogicalDiskFactory()
def consumedisk(self):
self.LogicalDisk.someaction()
次に、あなたのユニットテストコードでは、「のWin32_LogicalDisk」のモックオブジェクトを返す「LogicalDiskFactory」に渡します。
おそらく適切な遅延の後に、コアライブラリルーチンを置き換えて既知の値を返す一連の「テストスタブ」を作成することができます。
たとえば、私は最近、サードパーティ製の製品で実行するコードを開発する必要がありました。課題は、私たちの "パートナー"がベースコードとのコンパイルと統合を行うことでした。私はには許可されませんでしたのコードを見てください。私の戦略は、私がと思ったのは、エンジニアの情報に基づいて、のコードが行った非常に単純なエミュレータを構築することでした。私たちは、エミュレータのさまざまな部分を各ビルドの内外に簡単に切り替えるための言語を使用しました。そのため、パートナーに新しい各繰り返しを組み立てる前に、膨大なテストを行うことができました。
私は同じ特定の製品のソフトウェアの問題が次の最も信頼性の高い製品よりも一桁小さいため、同じ方法を再度使用したいと思います。
モックが難しいものをテストする最も簡単な方法は、コード(テストに値するロジック)が1か所にあり、コードが使用する他のものが別のモジュールにあるようにコードをリファクタリングすることです)。このモジュールは簡単にモックでき、ビジネスロジックに集中できます。
- 1. コード依存ユニットテスト
- 2. ユニットテストのJMS依存関係
- 3. データアクセス、ユニットテスト、依存性注入
- 4. ユニットテストの依存関係プロパティ
- 5. ユニットテストの依存関係について
- 6. ネットワーク接続に依存するAndroidサービスの単体テスト方法
- 7. ユニットテストAutoMapperとタイプコンバータに依存するASP.NET MVCアプリケーションサービス
- 8. EFコードによるユニットテストFirst DataContext
- 9. ユニットテスト機能はMouseEventArgsに依存していますか?
- 10. MSTest:ネットワークが利用できない場合にネットワークに依存する統合テストを無視する
- 11. WCF、依存性インジェクション、ユニットテストを使用したサービス間通信アーキテクチャ
- 12. ユニットテスト時の依存サービスの注入AngularJSサービス
- 13. ユニットテストはいつ負荷依存アセンブリを実行しますか?
- 14. ユニットテストのためのオプションの依存性注入
- 15. ユニットテストのためのデータベース依存関係を避けるために
- 16. ネットワーク関連クラスのユニットテストを書く
- 17. Cmakeによるビルドの依存性
- 18. UrlHelperによる依存性注入
- 19. GraphQLコードのJavaScript循環依存性
- 20. ユニットテストが他のユニットに依存している場合、モジュールテストはどのようにモジュール化できますか?
- 21. .NET 3.5 SP1に依存するコードを見つける
- 22. UIUserInterfaceIdiom(ios)に依存するコードをテストする方法
- 23. 依存関係注入による循環依存関係の解決
- 24. 既存のコードのユニットテストを整理する
- 25. gemsとMavenプロジェクトに依存するJRubyコードを書く
- 26. NSURLConnectionによるユニットテスト
- 27. シングルトンによるユニットテスト
- 28. ServiceLocatorによるユニットテスト
- 29. QVariantによるユニットテスト
- 30. ストーリーボードによるユニットテスト