C# 运行单元测试时,测试类的范围是什么?

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

当VisualStudio运行单元测试时,它会同时运行多个测试。当这些测试运行时,测试类的作用域到底是什么。它们是在不同的应用程序域中运行还是数据共享

例如,如果我有以下测试类:

[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();
}
发现之后,似乎在不同的线程上为每个测试实例化了一个单独的测试类

因此,实例成员将不会共享,而静态成员将共享