ヘルパー クラスの静的メソッドから、現在実行中の 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 を取得できれば、このテストのインスタンスを解決できます。