Material informático

Una clase abstracta - mejores prácticas de pruebas unitarias

Surge la pregunta de "cómo una clase abstracta de prueba unitaria?" con bastante frecuencia. ¿Extenderlo, entonces reemplace los métodos abstractos con bachas y luego probar solamente la parte concreta del método? ¿O desarrollar una prueba de unidad abstracta?

Creemos que éste es probablemente la pregunta equivocada cuando se trata de clases abstractas. De hecho creemos que existe una buena forma de evitar el problema en conjunto. Si tenemos en cuenta un resumen base clase allí son dos métodos estándar de acercarse a esto:

El primero es donde usted necesita especializar un objeto abstracto. En este caso seguramente encontrarás que los clientes necesitan utilizar la clase abstracta que se crea a través de una interfaz base.

En el segundo caso vas a compilar la clase abstracta para tratar de reducir las duplicaciones. En ese caso usted verá rápidamente que los clientes realmente están accediendo a versiones concretas de la clase cuando acceder a ellos a través de una interfaz.

Un cambio en el enfoque de desarrollo de pruebas de software

Si usted toma el primer método anterior entonces ya se tiene una interfaz que se han definido completamente. Es a través del proceso de los métodos virtuales dentro de las clases aplicando sus clases derivadas recientemente. ¿Por qué no hacer una interfaz real de la interfaz? Que cambiar la clase abstracta una versión concreta. Luego tomar una instantánea de la nueva interfaz del constructor. Todas las clases derivadas pueden utilizar entonces la interfaz real.

Esto es prueba de la clase abstracta fácil. Sólo utiliza un mofa de la interfaz y trabajar a través de cualquier implementación adicional usando lo que ahora es una interfaz real.

Para el segundo método, esto ya está funcionando como una clase auxiliar. Puede examinar la funcionalidad dentro de esa clase abstracta y tratar y trabajar en los objetos que está trabajando. Si encuentra todavía hay material en aquellas clases que terminado - la convierten en una clase auxiliar en el constructor (no olvide llevar la clase base) y es una implementación concreta. Esto es mucho más fácil intentar un resumen.

Es posible combinar los métodos 1 y 2, y hemos encontrado la mejor forma de enfoque que es usar el método para el segundo método y luego simplemente tomar el árbol de herencia y convertirlo en un patrón de estrategia.

La mejor manera de clases abstractas de la prueba de unidad es simplemente reducir la clase en algo más fácil de manejar.