0

ヘルパー クラスの静的メソッドから、現在実行中の UnitTest に関する情報を見つける必要があります。アイデアは、各テストから一意のキーを取得しています。

を使用することを考えTestContextましたが、可能かどうかはわかりません。

[TestClass]
public void MyTestClass
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    public void MyTestMethod()
    {
        TestContext.Properties.Add("MyKey", Guid.NewGuid());

        //Continue....
    }
}


public static class Foo
{

    public static Something GetSomething()
    {
        //Get the guid from test context.
        //Return something base on this key
    }

}

現在、このキーを を使用してスレッドに保存していますがThread.SetData、テストされたコードが複数のスレッドを生成すると問題になります。スレッドごとに、特定の単体テスト用に同じキーを取得する必要があります。

Foo.GetSomething()ユニットテスト自体からは呼び出されません。それを呼び出すコードは、Unity によって挿入されたモックです。

編集

ややこしいと思われるので、文脈を少し説明します。

Unity によって作成されたオブジェクトは、エンティティ フレームワークのコンテキストです。単体テストを実行すると、コンテキストは によって作成された構造体でデータを取得しますFoo.GetSomething。と呼びましょうDataPersistance

DataPersistance単体テストは互いに影響を与えるため、シングルトンにすることはできません。

現在、スレッドごとに 1 つのインスタンスがありますがDataPersistance、テストされたコードがシングル スレッドである限りは問題ありません。

DataPersistance単体テストごとに 1つのインスタンスが必要です。テストごとに一意の GUID を取得できれば、このテストのインスタンスを解決できます。

4

1 に答える 1

0
public static class Foo
{   
    public static Something GetSomething(Guid guid)
    {
        //Return something base on this key
        return new Something();
    } 
}

テスト:

[TestClass]
public void MyTestClass
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    public void MyTestMethod()
    {
        Guid guid = ...;
        Something something = Foo.GetSomething(guid);
    }
}
于 2013-08-23T16:00:49.083 に答える