2008-10-28 6 views
6

Presenté a los visitantes como una de las ideas principales de arquitectura en una de mis aplicaciones. Tengo varios visitantes que operan en un mismo lugar. Ahora, ¿cómo debería probarlo? Algunas pruebas en las que estoy pensando son un poco más grandes que una prueba unitaria (¿prueba de integración?) Pero todavía quiero hacerlo. ¿Cómo probaría el código como la muestra de C++ de wiki art en Visitor PatternPruebas unitarias Arquitectura de patrón de visitante

Respuesta

1

hacer un objeto visitante de prueba y hacerlo visitar cosas ... probar que visitó las cosas correctas.

+0

Puede dar un ejemplo sencillo ya que estoy usando Jsqlparser que usa el patrón de visitante y quería saber cómo probarlos. – Tony

+0

es probable que desee hacer su propia pregunta. muestre un código básico y lo que está teniendo problemas con las pruebas. Ya no uso C++, pero es probable que alguien más te proporcione un código que muestre cómo. –

+0

Aquí está el [enlace] (http://stackoverflow.com/questions/41887920/how-to-do-unit-testing-of-visitors-in-jsqlparser) a mi pregunta. – Tony

2

Puede crear mock objects y hacer que sus visitantes las visiten, y luego crear visitantes simulados, y probar que se realizaron las acciones correctas.

+0

¡¡Esa es de hecho una muy buena idea !!! –

3

Las pruebas unitarias no se tratan realmente de patrones de prueba, sino de probar la correcta implementación de métodos y funciones. El patrón de visitante es una estructura de clase específica, y para cada una de las clases (ConcreteVisitor y ConcreteElement, específicamente) involucradas, querrás pruebas unitarias.

Cuando haya desarrollado la confianza de que sus métodos de clase se comportan correctamente, podría usar su marco de pruebas unitarias para desarrollar pruebas de integración también. No inicie la prueba de integración inmediatamente: encontrará que desarrolla muchas pruebas de integración que en realidad están probando el comportamiento de una clase específica, es decir, pruebas unitarias.

Si necesita objetos simulados o puede usar objetos 'reales' es una cuestión diferente. Esto depende mucho de si los objetos se comportan lo suficientemente bien para los propósitos de la prueba unitaria (es decir, no atraen muchas dependencias adicionales, etc.) y si los objetos en sí mismos están probados en unidades (es decir, usted debe poder confiar en estos objetos 100%). El problema de simulacro frente a objetos reales se ha abordado anteriormente en stackflow, de modo que busque las etiquetas unittest.