簡體   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