繁体   English   中英

Visual Studio单元测试用于不同的接口实现

[英]Visual studio unit test for different implementation of interface

我需要对一个特定接口的两个实现类进行单元测试。 单元测试类是通用的,涵盖了接口的所有必要测试。 我想在测试单元类TestInitialize方法中实例化实现类。

有什么办法可以强制测试类使用不同的实现类实例运行两次。

[TestClass]
public class MyFixture
{
    [TestInitialize()]
    public void MyTestInitialize()
    {
        ITest mockInstance = new TestImplement1();
        //ITest mockInstance = new TestImplement2();
    }

    [TestMethod]
    public void Test1 ()
    {
        mockInstance.Func1();
        ...  
    }

    [TestMethod]
    public void Test2 ()
    {
        ...  
    }

    ...other unit tests

 }

对于这种模式,通常你会有一个带测试方法的基础测试类,然后你将它子类化并填写设置方法。 所以它会变成这样:(我使用NUnit,所以如果测试框架方法稍微偏离,我会道歉)

// don't mark this one as TestClass!
public abstract class MyBaseFixture
{
    protected ITest mockInstance;

    [TestMethod]
    public void Test1 ()
    {
        Assert(this.mockInstance.Func1() == 0);
    }
}

[TestClass]
public class MyConcreteFixture : MyBaseFixture
{
    [TestInitialize]
    public void Setup()
    {
        this.mockInstance = new ConcreteInstance1();
    }
}    

[TestClass]
public class MyOtherConcreteFixture : MyBaseFixture
{
    [TestInitialize]
    public void Setup()
    {
        this.mockInstance = new ConcreteInstance2();
    }
}

你应该查看Greg Young的界面不变NUnit插件: https//github.com/gregoryyoung/grensesnitt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM