私は自分のコードを単体テストすることについてより良くしようとしていますが、今はリモートシステムを扱う多くのコードを書いています。 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. 依存ユニットテスト:角2
- 3. ユニットテストにおける依存性注入
- 4. ユニットテストの依存関係プロパティ
- 5. データアクセス、ユニットテスト、依存性注入
- 6. ユニットテストC#MOQ依存注射
- 7. ユニットテストのJMS依存関係
- 8. ネットワーク接続の依存関係を持つメソッドの書き込みユニットテスト
- 9. ユニットテストの依存関係について
- 10. ユニットテスト、依存性注入、AutoMapperアノテーション
- 11. angle2、依存性注入のユニットテスト
- 12. ユニットテスト - インタフェース、モッキングと依存性の注入
- 13. サービス(依存関係あり)angular2のユニットテスト
- 14. 64ビットItkフレームワークに依存するDLLのユニットテスト
- 15. ユニットテストAutoMapperとタイプコンバータに依存するASP.NET MVCアプリケーションサービス
- 16. ユニットテストの方法ビジュアルデータに依存する反応コンポーネント
- 17. ネットワーク接続に依存するAndroidサービスの単体テスト方法
- 18. ネットワークに依存しているときのQtテスト
- 19. EFコードによるユニットテストFirst DataContext
- 20. 実際にインスタンスを解決せずにユニットテスト依存性注入
- 21. ユニットテスト関数 - argsとグローバルアクセスのように依存関係を渡す
- 22. コード化クリーンアップvs.依存
- 23. アーキテクチャ依存しないコード
- 24. ユニットテスト機能はMouseEventArgsに依存していますか?
- 25. nodejsユニットテストの依存関係を盗もうとする
- 26. Androidユニットテストでグラデル依存関係を使用する
- 27. 依存関係を持つ工場をユニットテストする方法
- 28. System.importでWebpack 2のコード分割:依存関係の依存性
- 29. javascriptコードの内容をドロップダウンリストに依存
- 30. MSTest:ネットワークが利用できない場合にネットワークに依存する統合テストを無視する