我有以下测试设置。

[TestClass,
Isolated]
public class TestClass
{
    public TestClass()
    {
    }

    private TestContext testContextInstance;
    public TestContext TestContext
    {
        get { return testContextInstance; }
        set { testContextInstance = value; }
    }

    [ClassInitialize,
    Isolated]
    public static void InitializeRunState(TestContext testContext)
    {
        Helpers.SetupMocks();
        //do some class init stuff
    }

    [TestInitialize]
    public void InitializeTestState()
    {
        Helpers.SetupMocks();
    }

    [TestMethod]
    public void Test()
    {
        //execute test
    }
}

Helpers.SetupMocks()方法中,我正在调用 Isolator.Swap.AllInstances< T>()

只要我没有执行负载测试,这就行得很好。一旦配置了将执行 Test 方法的负载测试,TypeMock就会开始抛出此异常:

  

TypeMock.TypeMockException:***无法在类型上多次调用Swap.AllInstances()。

无论如何要避免这种情况吗?我有错误的配置吗?

有帮助吗?

解决方案

免责声明我在Typemock工作

首先请注意,我们抛出此异常是因为假设多次伪造一个类型的所有实例并没有意义,我们想让用户知道他可能犯了错误。
我认为问题在于,当你运行负载测试时,mstest并行运行测试类的几个实例 在这种情况下,您应该将调用从类设置中的Isolator.Swap.AllInstances()移动到测试方法。
如果运行mstest不会在同一个类中并行运行测试,它可能会起作用。 不幸的是,mstest似乎没有用于覆盖此行为的命令行参数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top