Phil Haack がここで提案した方法で単体テストを整理し始めました。私のテスト クラスには、テスト対象のパブリック メソッドごとに 1 つのネストされたクラスがあります。ネストされたクラスは、そのセットアップ コードを継承するために、外部クラスから派生します。
1 つの抽象基本クラスと 2 つの派生クラスの単純な階層をテストしたい場合があります。基本クラスをある種のモック派生クラスでテストするのではなく、各派生クラスと基本クラスとの相互作用を明示的にテストしたいと思います。
私は過去に、ベース テスト フィクスチャと、派生クラスごとに 1 つの派生フィクスチャを使用してこれを行いました。派生フィクスチャは、ベース フィクスチャのテスト用にいくつかのテンプレート メソッドを実装する必要があります。
[TestFixture]
public abstract class BaseFixture
{
protected abstract MyBaseClassUnderTest GetTestInstance();
[Test]
public void SomeMethod_SomeCondition_SomeOutcome()
{
var sut = GetTestInstance();
//test base class behavior here
}
//More base class tests here
}
public class DerivedFixture : BaseFixture
{
protected override MyBaseClassUnderTest GetTestInstance()
{
return new DerivedInstance();
}
//Tests for derived class go here
}
どうすればこれを解決できますか?現時点では、継承戦略が異なるため (外部クラスからセットアップ コードを継承するか、基本クラス フィクスチャから基本クラス テストを継承するか)、2 つのアプローチをどのように組み合わせることができるかわかりません。