0

次のテスト設定があります。

[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>()

これは、負荷テストを実行していない限り、うまく機能します。TestTypeMockがこの例外をスローし始めるメソッドを実行する負荷テストを構成するとすぐに、次のようになります。

TypeMock.TypeMockException:***タイプに対してSwap.AllInstances()を複数回呼び出すことはできません。

これを回避する方法はありますか?何か間違った設定がありますか?

4

1 に答える 1

2

免責事項私はTypemockで働いています

最初に、この例外をスローすることに注意してください。これは、あるタイプのすべてのインスタンスを2回以上偽造しても意味がなく、ユーザーに間違いを犯した可能性があることを知らせたいためです。
問題は、負荷テストを実行すると、mstestがテストクラスのいくつかのインスタンスを並行して実行することだと思います。
その場合、Isolator.Swap.AllInstances()の呼び出しをクラス設定からテストメソッドに移動する必要があります。
mstestを実行しても、同じクラスでテストが並行して実行されない場合は、機能する可能性があります。残念ながら、mstestにはこの動作をオーバーライドするためのコマンドライン引数がないようです。

于 2009-07-30T13:10:43.700 に答える