4

Visual Studioが単体テストを実行している場合、多くのテストを同時に実行します。これらの実行中のテストクラスのスコープは正確には何ですか。それらはすべて別々のアプリドメインで実行されていますか、それともデータはまったく共有されていますか?

たとえば、次のテストクラスがある場合:

[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
    }
}

テストでは、CreateComplexMocks()ヘルパーを使用していくつかのモックを作成します。これらは、テストに戻されるのではなく、メンバーとして公開されます(実際の例では、おそらくもっと多くのことがあります)

私の質問は、両方のテストが同時に実行された場合、それらはとの状態を共有するの_complexMock1でしょ_complexMock2うか?

complexMocksが静的だった場合はどうなりますか?

4

2 に答える 2

2

このブログを見つけたので、別のスレッドで、テストごとに別のテスト クラスがインスタンス化されているように見えます。

したがって、インスタンス メンバーは共有されませんが、静的メンバーは共有されます。

于 2012-11-01T11:30:36.700 に答える
1

あなたの例では、[TestInitialize] メソッドでモックを作成する必要があります。
これにより、テストが実行されるたびに、モックが再度作成されます。

[TestInitialize]
public void TestInit()
{
    CreateComplexMocks();
}
于 2012-11-01T11:20:28.877 に答える