使用Xunit测试多个派生类型的最佳方法是什么?

时间:2012-09-09 12:14:38

标签: c# unit-testing xunit

我有一个界面IFoo

public interface IFoo
{
    void DoSomeStuff();
}

我有两种派生类型FooImpl1FooImpl2

public class FooImpl1 : IFoo
{
    public void DoSomeStuff()
    {
        //...
    }
}

public class FooImpl2 : IFoo
{
    public void DoSomeStuff()
    {
        //Should do EXACTLY the same job as FooImpl1.DoSomeStuff()
    }
}

我有一个测试类,它测试IFoo FooImpl1合同 private static IFoo FooFactory() { return new FooImpl1(); } [Fact] public void TestDoSomeStuff() { IFoo foo = FooFactory(); //Assertions. }

FooImpl1

如何重复使用此测试类来测试FooImpl2和{{1}}?

谢谢

1 个答案:

答案 0 :(得分:2)

如何使用抽象方法返回适当的实现来为IFoo测试创建基类?

public abstract class FooTestsBase
{
    protected abstract IFoo GetTestedInstance();

    [Fact]
    public void TestDoSomeStuff()
    {
        var testedInstance = GetTestedInstance();
        // ...
    }
}

现在,所有派生类型必须做的只是提供一个实例:

public class FooImpl1Tests : FooTestsBase
{
    protected override IFoo GetTestedInstance()
    {
        return new FooImpl1();
    }
}