2011-12-15 11 views
11

Encontré la clase TestExecution, que expone un montón de eventos que serían increíblemente útiles. Sin embargo, no puedo encontrar una referencia a él que no sea la documentación de MSDN, y la documentación no proporciona ninguna pista sobre cómo se usa, o cómo podría obtener una referencia a una instancia durante una ejecución de prueba.¿Cuál es el propósito de la clase TestExecution en MSTest?

Mirar con .NET Reflector tampoco fue útil - TestExecution está implementado por otra clase, UnitTestExecution, que es interna. No pude encontrar ninguna otra referencia a ninguna de las clases en ninguna de las bibliotecas Microsoft.VisualStudio.QualityTools. *, Ni en la forma de implementaciones adicionales ni referencias como tipos de propiedades en otras clases.

¿Cómo puedo obtener acceso a estos eventos?

+0

Parece una clase abstracta, por lo que es probable que deba derivar de ella e implementar algunos métodos/propiedades abstractos. – Bernard

+0

No necesariamente ... Creo que es más probable que la abstracción sea utilizada por el framework. Dado que es una clase pública, y dado que UnitTestExecution no lo es, parece seguir el patrón de exposición de la abstracción, pero no la implementación. Por lo general, hay una manera de obtener una referencia a una instancia de la abstracción (como con la propiedad TestContext, donde TestContext también es una clase abstracta), pero no he podido encontrarla. –

+0

Esta parece ser una de esas situaciones en las que "preguntarle al autor" sería lo mejor. – Bernard

Respuesta

10

Se le proporciona una instancia TestExecution al implementar un TestExtensionExecution personalizado. Proporciona un método Initialize, que puede anular para suscribirse a los eventos de prueba.

Esto generalmente es parte de una implementación de un atributo de prueba personalizado en MSTest.

Editar para crear su propia extensión de prueba, a empezar con la creación de un nuevo atributo que se deriva de Microsoft.VisualStudio.TestTools.UnitTesting.TestClassExtensionAttribute, que es una clase abstracta que requiere que proporcione un TestExtensionExecution a través del método GetExtension().

Añade su atributo a uno de sus métodos de prueba y usted debería ser capaz de suscribirse a los eventos durante la prueba (dentro de su TestExtensionExecution aplicación devuelta por el atributo)

Tenga en cuenta que también hay que poner en práctica un ITestMethodInvoker cuales Debería poder crear desde la propiedad TetMethodInvokerContext.TestMethodInfo suministrada al método TestExtensionExecute.CreateTestMethodInvoker.

+1

¿Cómo se configura una de estas extensiones para ser utilizada? –

+0

Deseo que esta información ya sea parte de la documentación de MSTest en MSDN. –

Cuestiones relacionadas