各クラスにテストをコピーすることなく、抽象クラスのインターフェイスメソッドの実装の動作をテストするにはどうすればよいですか?ユニットテストインターフェイスの実装方法、それを行うには?
私は(複数の)インターフェイスを実装するクラスを持っています。私は各インターフェイスの動作を知っています。テストメソッドでこれを定義して、インターフェイスの実装ごとにこれらのテストを手動で繰り返す必要はありません。
テストごとに抽象クラスを作成し、コンクリートクラスの新しいインスタンスを作成する抽象メソッドCreateSUT()
を作成できました。しかし、C#は多重継承をサポートしていないので、クラスが実装する各インタフェースに対して同じCreateSUT()
実装を持つ新しいクラスを作成する必要があります。これを行うより良い方法はありますか?
また、いくつかの非抽象サブクラスを持つ抽象クラスで実装されたインターフェイスをテストして、少し複雑になっていることにも注意してください。
この質問はない私はユニット私のインターフェイスの実装をテストする必要があるかどうかについてです。インターフェイスの実装がどのように動作する(null値を返すことはなく、読み取り専用のコレクションを返すなど)と、これらのテストをまとめることで、テストするのがはるかに簡単になることが分かっているので、その実装は、多くの場合があります。
は、まあ、3つのオプション1.がありますインターフェイスをテストするものではありません - あなたは減少しました。 2.それぞれの派生クラスをテストします。 3. 1つの派生クラスのみをテストします。 – gdoron
「私は作成できる...」という段落であなたが何を言っているのか分かりません。インターフェイスにファクトリメソッドを含める必要はありません。また、「多重継承の欠如」という問題が発生している理由も理解できません。あなたはまだいくつかのインターフェイスを実装しているクラスを持つことができます。これはあなたのケースについてです。 – Tormod