Perdimos mucho tiempo en nuestra última prueba de integración en un error que creo que debería haberse encontrado en las pruebas unitarias. El problema fue que una interfaz / servicio que llamamos se comportó de manera diferente de lo que esperábamos y la prueba unitaria no encontró este problema porque nos burlamos de esa interfaz para la prueba unitaria y nuestra simulación se basó en nuestra interpretación errónea de lo que la interfaz haría hacer. Ahora podría estar un poco enojado con nuestro querido compañero de trabajo que proporcionó la interfaz, porque su descripción / especificación (un breve comentario de JavaDoc) fue ambigua y contribuyó a nuestro malentendido. Por otro lado, pensé que el problema podría haberse evitado si esos mismos compañeros de trabajo hubieran proporcionado una implementación simulada de su interfaz que podríamos llamar en nuestras pruebas unitarias.
Ahora, ¿cuál es la mejor práctica para organizar la creación de objetos simulados entre los equipos que proporcionan y usan interfaces compartidas? Cuales son tus experiencias
fuente
Respuestas:
Idealmente, si.
Cualquiera que escriba código que otras personas usen no está obligado a proporcionar nada que complemente el código. Sin embargo, si usted quiere que la gente use su código (y todo el mundo siempre debe ser escrito con esta mentalidad), extensa documentación pertinente - que puede incluir ejemplos - son extremadamente útiles.
Creo que nunca he leído documentación y he pensado: "Esto es estúpido; hay demasiada documentación". Las personas son naturalmente dotadas para saltarse lo que consideran innecesario. Sin embargo, no podemos simplemente leer la mente e interpolar la documentación o conceptos que no han sido explicados. Por lo tanto, es seguro suponer: no existe demasiada buena documentación. También debe suponer que la persona que lo lee es un bebé ingenuo (es decir, que sea lo más simple posible).
Los ejemplos sobre cómo crear instancias y usar una clase siempre son útiles. Aunque, si el código se basa demasiado en la documentación para ser entendido, ese es otro problema (separado).
Esta respuesta no debe verse como una potencia de fuego que justificará gritarle a su compañero de trabajo. Es simplemente una pauta de lo que creo que es beneficioso y debe hacerse. Si bien esto es completamente inútil en su situación (aunque, creo que su pregunta es básicamente una queja), lo mejor que puede hacer es dar el ejemplo y esperar que su colega aparezca.
fuente
No , pero el proveedor también debe proporcionar el código fuente para sus pruebas unitarias. Al leer estas pruebas unitarias, obtendrá una buena impresión de cómo se debe utilizar la biblioteca. Tal vez pueda agregar pruebas unitarias a las pruebas de proveedor para especificar lo que espera del proveedor.
Existen muchas herramientas / marcos de simulación que pueden implementar un falso / trozo / simulación.
Pedirle al proveedor una implementación simulada no tiene una buena relación costo / beneficio porque no puede saber qué parte de la implementación falsa debe ser casi idéntica a la implementación real y qué parte es solo fachada.
Otra forma de evitar esto es si el proveedor usa contratos de código para asegurarse de que la lib se usa de la manera especificada.
fuente
the mock should check all the preconditions
: ¿por qué el simulacro necesita verificar si la lib real hace esta comprobación? Si tiene pruebas de integración con la biblioteca real, estas pruebas lo llevarán al problema.