在 Visual Studio 负载测试中使用 TypeMock Isolator.Swap.AllInstances<T>?

Posted

技术标签:

【中文标题】在 Visual Studio 负载测试中使用 TypeMock Isolator.Swap.AllInstances<T>?【英文标题】:Using TypeMock Isolator.Swap.AllInstances<T> in a Visual Studio Load Test? 【发布时间】:2009-07-30 12:32:42 【问题描述】:

我有以下测试设置。

[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&lt;T&gt;()

只要我不执行负载测试,它就可以很好地工作。一旦我配置了将执行Test 方法的负载测试,TypeMock 就会开始抛出此异常:

TypeMock.TypeMockException: *** 不能对一个类型多次调用 Swap.AllInstances()。

有没有办法避免这种情况?是不是我的配置有问题?

【问题讨论】:

【参考方案1】:

免责声明我在 Typemock 工作

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

【讨论】:

以上是关于在 Visual Studio 负载测试中使用 TypeMock Isolator.Swap.AllInstances<T>?的主要内容,如果未能解决你的问题,请参考以下文章

命令行的 Visual Studio 负载测试设置参数

Visual Studio 负载测试 - 每次唯一的数据

Visual Studio 2010 中的负载测试执行时间

Visual Studio 负载测试代理权重

Visual Studio 2012 负载测试忽略步数

在 Visual Studio 中录制 Web 负载测试项目