2011-07-16 6 views
3

プロジェクトの一環として、私はNetworkStreamから派生したクラスを持っています。このケースでは、ReadやReadByteなどのラップされた実装を提供して、コンテキスト固有の安全性を提供します(いくつかの追加ロジックで基本メソッドを呼び出します)。NetworkStreamから派生したクラスを単体テストする方法は?

しかし、これをテストすることは問題です。クラスはコンストラクタ(具体的な型)のソケットを必要とし、私のためには動作しません(ここではMoMを使用します。おそらくTypeMockのようなものですが、高価なツールを避けたいです)。

また、継承するのではなく、NetworkStreamをラップしてNetworkStreamに似た独自のインターフェイスを実装するクラスを作成することもできます。しかし、これも問題です。 StreamReaderなどのBCLのストリームのほとんどのコンシューマは、具体的なStreamまたは派生型を必要とするため、作成したクラスでは機能しません。

誰にでもどのような選択肢がありますか?それは、まともなカバーなしで私が幸せに感じるものではありません - それは多くが間違って行くことができる領域です、そして、それはしっかりしているはずです。

答えて

0

ペックスとモルプロジェクトhttp://research.microsoft.com/en-us/projects/pex/をご覧ください。より具体的にはMolesの部分。ここには始めるための直接リンクがあります。 http://research.microsoft.com/en-us/projects/pex/molestutorial.pdf

+0

これはかなり合理的な答えです。プロセスにモールを取り付けることは簡単ではありませんが、ここでは唯一の選択肢かもしれません。さて、MSなどの人々がストリームリーダーのような一般的な消費者に、この恐怖を回避して具体的なタイプではなくインターフェイスを取るように設計すれば、美しいものになるでしょう。 – kolektiv

+0

私たちはそれを望むことができます、近い将来に起こることはほとんどありません。 – BennyM

関連する問題