C# 运行单元测试时,测试类的范围是什么?
当VisualStudio运行单元测试时,它会同时运行多个测试。当这些测试运行时,测试类的作用域到底是什么。它们是在不同的应用程序域中运行还是数据共享 例如,如果我有以下测试类:C# 运行单元测试时,测试类的范围是什么?,c#,visual-studio,unit-testing,scope,mstest,C#,Visual Studio,Unit Testing,Scope,Mstest,当VisualStudio运行单元测试时,它会同时运行多个测试。当这些测试运行时,测试类的作用域到底是什么。它们是在不同的应用程序域中运行还是数据共享 例如,如果我有以下测试类: [TestClass] public class FooTests { Mock<ISomeInterface1> _complexMock1; Mock<ISomeInterface2> _complexMock2; public void CreateComplex
[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
}
}
[TestClass]
公营足球场
{
模拟_complexMock1;
模拟_complexMock2;
public void CreateComplexMocks()
{
//设置\u complexMock1和\u complexMock2
}
[测试方法]
公共void Test1()
{
CreateComplexMocks();
//在测试中使用_complexMock1和_complexMock2
}
[测试方法]
公共无效测试2()
{
CreateComplexMocks();
//在测试中使用_complexMock1和_complexMock2
}
}
这些测试使用CreateComplexMocks()
helper来构造一些模拟。它们作为成员公开,而不是传递回测试(在实际示例中可能会有更多)
我的问题是,如果两个测试同时运行,它们是否会共享\u complexMock1
和\u complexMock2
的状态
如果complexMock是静态的呢?在您的示例中,您应该使用[TestInitialize]方法创建模拟。
每次测试运行时,都会再次创建模拟
[TestInitialize]
public void TestInit()
{
CreateComplexMocks();
}
发现之后,似乎在不同的线程上为每个测试实例化了一个单独的测试类
因此,实例成员将不会共享,而静态成员将共享