Pregunta

Supongo que la semántica actual de las pruebas unitarias implica llamar al método, es decir, si tengo un método MyTest() Entonces eso es lo que se llama. Mi pregunta es esta: ¿es posible cambiar de alguna manera la tubería de la forma en que se ejecutan las pruebas (preferiblemente sin recompilar el corredor de prueba) para que, por ejemplo, en lugar de llamar al método directamente se llama a través de una envoltura que proporciono (es decir, MyWrapper(MyTest))?

Gracias.

¿Fue útil?

Solución

Si usa mbunit, entonces hay muchas cosas que puede personalizar definiendo atributos personalizados.

La forma más fácil de hacerlo es crear una subclase de TestDecoratorAttribute y anular la configuración, desmontaje o ejecutar métodos para envolverlos con una lógica adicional de su elección.

Sin embargo, si necesita un control más fino, en su lugar puede crear una subclase de TestDecoratorPatterNattribute y anular el método DecorAtetest con Logic para agregar acciones de prueba adicionales o acciones de instancia de prueba.

Por ejemplo, el atributo MBunit [repetición] funciona envolviendo la acción de ejecución del cuerpo de la prueba (que ejecuta todas las fases de la prueba) con un bucle y una contabilidad adicional para ejecutar la prueba repetidamente.

Aquí está el código para Repetattribute: http://code.google.com/p/mb-unit/source/browse/trunk/v3/src/mbunit/mbunit/framework/repeatattribute.cs

Otros consejos

Depende de cómo el marco de prueba unitario proporcione capacidades de intercepción y extensibilidad.

La mayoría de los marcos (MSTEST, NUNIT, etc.) le permiten definir los métodos de configuración y desmontaje que están garantizados para ejecutarse antes y después de la prueba.

xunit.net tiene mecanismos de extensibilidad más avanzados donde puede definir los atributos personalizados que puede usar para decorar sus métodos de prueba para cambiar la forma en que se invocan. Como ejemplo, hay un TororyTribute que le permite definir pruebas parametrizadas.

No conozco mbunit, así que no puedo decir si admite estos escenarios o no.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top