2011-11-01 29 views
26

Utilicé la herramienta de pruebas de unidad de creación en Visual Studio y obviamente intenta crear una instancia de mis clases abstractas.Cómo probar las clases abstractas de unidad

Mi pregunta es: ¿Debería probar de forma unitaria la forma en que Visual Studio intenta hacer que lo haga, o debería crear una clase falsa para crear una instancia, o debería probar solo los métodos que usan esta clase abstracta? ?

Gracias.

Respuesta

44

Si hay métodos en esta clase abstracta que valen la pena probar, entonces debe probarlos. Siempre puede subclasificar la clase abstracta para la prueba (y nombrarla como MyAbstractClassTesting) y probar esta nueva clase concreta.

+0

¿Qué pasa si está 'interno protegido' :) – sotn

16

Hay dos puntos de vista opuestos:

  • No prueba en sí clase abstracta, clases concretas de prueba heredados de que
  • clase abstracta debe ser probado también porque proporciona algunas de ellas construidas en la lógica compartida a través de todos las clases heredadas por lo que sólo ponen a prueba la lógica de base en la clase abstracta vez

yo prefiero la segunda opción (en la actualidad) y pruebas de las clases abstractas usando RhinoMocks PartialMock característica que me permite crear una maqueta de un resumen clase.

5
  1. Simplemente pruebe las clases de implementación.

  2. Siempre puede crear una implementación específica para las pruebas que no agrega funcionalidad adicional.

  3. Escucha las pruebas. El uso de herramientas de burla que hacen magia para permitir la prueba de clases abstractas y métodos privados, etc. es un código de prueba olor