运行单元测试时,测试类的范围是什么?
问题描述:
当Visual Studio运行单元测试时,它会同时运行多个测试。测试类正在运行的范围究竟是什么?它们是全部运行在不同的应用程序域还是共享数据?运行单元测试时,测试类的范围是什么?
举例来说,如果我有以下的测试类:
[TestClass]
public class FooTests
{
Mock<ISomeInterface1> _complexMock1;
Mock<ISomeInterface2> _complexMock2;
public void CreateComplexMocks()
{
//set up _complexMock1 & _complexMock2
}
[TestMethod]
public void Test1()
{
CreateComplexMocks();
//use _complexMock1 & _complexMock2 in test
}
[TestMethod]
public void Test2()
{
CreateComplexMocks();
//use _complexMock1 & _complexMock2 in test
}
}
试验利用CreateComplexMocks()
助手来构建一些嘲笑。这些被暴露为成员而不是被传回测试(在现实世界的例子中可能会有更多)
我的问题是,如果两个测试同时运行,它们将共享状态_complexMock1
和_complexMock2
?
如果complexMocks是静态的呢?
答
在你的例子中,你应该在[TestInitialize]方法中创建你的模拟。
通过这个每次测试运行你的嘲笑将被再次创建。
[TestInitialize]
public void TestInit()
{
CreateComplexMocks();
}