![](/img/trans.png)
[英]Visual Studio Unit Test Code Base is different from machine to machine
[英]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.