iOSでのI/O操作を含む単体テスト方法の最適な方法は何ですか?iOSでのI/Oによるユニットテスト方法
たとえば、Objective-C categoriesを使用して、imageNamedなどのI/Oメソッドの動作を再定義することを検討しています。ただし、実装で使用されているI/Oメソッドを知る必要があるため、ブラックボックスのユニットテストはできません。
iOSでのI/O操作を含む単体テスト方法の最適な方法は何ですか?iOSでのI/Oによるユニットテスト方法
たとえば、Objective-C categoriesを使用して、imageNamedなどのI/Oメソッドの動作を再定義することを検討しています。ただし、実装で使用されているI/Oメソッドを知る必要があるため、ブラックボックスのユニットテストはできません。
実際のI/Oデータの代わりにテストデータを提供できるように、またはOCMockを使用して、I/O操作の結果を渡します。私は正確にこの目的のためにOCMockを使用しました。 OCMockを検討している場合は、利用可能なすべてのメソッドのヘッダーファイルを少なくとも読んでください。内部実装の詳細を確認する方法はありませんので
レガシーコードでの作業は、サードパーティ製のフレームワークでメソッドの実装を交換マイケル羽でブックWorking Effectively with Legacy Codeを研究/
を読んでみた場合には、行うには非常に危険なものですしたがって、あなたが知らないうちに壊れているかもしれない依存関係です。それは非常に脆弱です。たとえそれが今日正しく動作しても、フレームワークの将来のリリースで何かが壊れる可能性があります。
このようにした変更の有効性を保証するユニットテストはありません。純粋に実験のためにこのようなことをしていたら、それは楽しいかもしれないし、学習目的には役立つかもしれないと確信していますが、ブラックボックステストについて心配することはありません。
フレームワークのメソッド実装を置き換えるのではなく、既存のものと平行するメソッドを追加することで、必要なものを達成できるかどうかを検討してください。