Использование Visual Studio для создания класса Test Unit. Затем прокомментируйте метод инициализации класса. Внутри него добавьте ваше свойство, используя аргумент testContext.
При запуске тестового приложения этот метод действительно вызывается инфраструктурой тестирования.
//Use ClassInitialize to run code before running the first test in the class
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
/*
* Any user defined testContext.Properties
* added here will be erased after this method exits
*/
testContext.Properties.Add("key", 1 ) ; // place the break point here
}
После выхода из MyClassInitialize все добавленные пользователем свойства будут потеряны. Осталось только 10 "официальных".
На самом деле TestContext перезаписывается исходным, каждый раз перед вызовом каждого метода тестирования. Если он не перезаписан, только если у пользователя есть метод инициализации теста, сделанные там изменения передаются в тест.
//Use TestInitialize to run code before running each test
[TestInitialize()]public void MyTestInitialize(){
this.TestContext.Properties.Add("this is preserved",1) ;
}
Это фактически означает, что TestContext.Properties «в основном» доступен только для чтения для пользователей. Который не четко задокументирован в MSDN.
Мне кажется, это очень грязный дизайн + реализация. Зачем вообще иметь TestContext.Properties в качестве коллекции? Пользователи могут использовать множество других решений для инициализации на уровне класса.