El uso de Visual Studio genera la clase de Unidad de prueba. Luego comenten, el método de inicialización de clase. Dentro, agrega tu propiedad usando el argumento testContext.¿Se pueden usar TestContext.Properties?
Al inicio de la aplicación de prueba, la infraestructura de prueba llama a este método.
//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
}
Después de salir de MyClassInitialize, se pierden todas las propiedades agregadas por el usuario. Solo quedan los 10 "oficiales".
En realidad, TestContext se sobrescribe, con el inicial ofical, cada vez que se llama a cada método de prueba. No se sobrescribe solo si el usuario tiene un método de inicialización de prueba, los cambios realizados allí se pasan a la prueba.
//Use TestInitialize to run code before running each test
[TestInitialize()]public void MyTestInitialize(){
this.TestContext.Properties.Add("this is preserved",1) ;
}
Esto significa que TestContext.Properties es "principalmente" de solo lectura, para los usuarios. Que no está claramente documentado en MSDN.
Me parece que este es un diseño muy complicado + implementación. ¿Por qué tener TestContext.Properties como colección, en absoluto? Los usuarios pueden hacer muchas otras soluciones para tener una inicialización de toda la clase.
Nunca he entendido el propósito del contexto de prueba que realmente lo usaría. –
El propósito se explica en https://blogs.msdn.microsoft.com/vstsqualitytools/2006/01/09/using-testcontext-in-unit-tests/ –