我必须从帮助类的静态方法中找到有关当前正在运行的 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 注入的 mock。
编辑
我将稍微解释一下上下文,因为它似乎令人困惑。
通过统一创建的对象是实体框架的上下文。运行单元测试时,上下文在由Foo.GetSomething
. 让我们称之为DataPersistance
。
DataPersistance
不能是单例,因为单元测试会相互影响。
我们目前每个线程都有一个实例,DataPersistance
只要测试的代码是单线程的,女巫就很好。
DataPersistance
我想要每个单元测试的一个实例。如果每个测试可以获得一个唯一的 guid,我就可以解析该测试的实例。