我必須從輔助類的靜態方法中找到有關當前正在運行的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()
不從unittest本身調用。調用它的代碼是由Unity注入的模擬。
編輯
我會解釋的背景一點點,因爲它似乎是混亂的。
通過統一創建的對象是實體框架的上下文。在運行單元測試時,上下文將以由Foo.GetSomething
創建的結構獲取其數據。我們稱之爲DataPersistance
。
DataPersistance
不能是單身人士,因爲單元測試會影響對方。
我們目前每個線程有一個DataPersistance
的實例,只要被測試的代碼是單線程的,它就很好。
我想每個單元測試一個DataPersistance
的實例。如果一個測試可以得到一個獨特的GUID,我可以解決這個測試的實例。
爲什麼你不把它作爲參數傳遞給輔助類? –
問題是什麼? –
@Darin:因爲輔助類是靜態的,並且它被通過Unity創建的對象遠程調用。 – Johnny5