Quiero capturar la salida enviada a la salida estándar y el error estándar dentro de una prueba de la unidad MSTest para que pueda verificarlo. He capturado la salida antes al ejecutar explícitamente un Process
, pero ¿hay alguna manera de hacerlo con [supongo] el proceso MSTest en sí? Por ejemplo:comprobar la salida en la prueba de la unidad MSTest
[TestMethod]
public void OutputTest()
{
MySnazzyMethod("input", 1, 'c');
string stdOutFromMySnazzyMethod = /* ??? */;
Assert.AreEqual("expected output", stdOutFromMySnazzyMethod);
}
Tenga cuidado con los campos estáticos en las clases de prueba. Si va a usarlos, asegúrese de establecer OutputHandler._stdOut y/o OutputHandler._stdErr al comienzo de cualquier prueba que los use. Los conjuntos de pruebas de unidades MSTest (pruebas no ordenadas) se ejecutan de forma no determinista, por lo que las pruebas posteriores en su ejecución pueden no tener estos campos configurados correctamente en Console.Out y Console.Error antes de que intenten usar esos TextWriters. (TestInitialize() y TestCleanup() tampoco garantizan ninguna seguridad contra esto.) – David