Pregunta

Estoy escribiendo pruebas unitarias para clases que tienen propiedades que tienen Setters pero no Getters.

Quiero poder poder Prueba a estos setters Para asegurarse de que estén configurando los datos correctamente.

Encuentro que mis opciones son:

  • Escribir Getters para estas funciones para que pueda probar si están configuradas correctamente
  • escribir un método como testAllSetters() que los prueban todos a la vez

Pero ambas soluciones son indeseable ya que agrega funcionalidad innecesaria a la clase solo por probarla.

  • También podría probar la salida de la clase para ver que es correcto en general, pero en muchos casos esto no prueba a los setters individuales como me gustaría

¿Cuál es la mejor manera de los establecedores de pruebas unitarias en las clases que no tienen Getters emparejados?

¿Fue útil?

Solución

El problema aquí es que no quiere cambiar su API para sus pruebas unitarias. Comience a mirar sus pruebas unitarias como otro usuario/consumidor de su API. Al igual que los desarrolladores que usan esa biblioteca, las pruebas unitarias tienen su propio conjunto de requisitos. Cuando vea sus pruebas unitarias como consumidor de su API, habrá un usuario que use esos getters, y los justificará.

Cuando esto no sea posible cambiar su API (por ejemplo, si está desarrollando un marco reutilizable), haga que la API de prueba unitaria sea interna y use el InternalsVisibleToAttribute Para permitir que su biblioteca de pruebas acceda a los métodos internos de su código.

Dejando a un lado las pruebas unitarias, es posible que desee considerar tener obteniendo esas propiedades, porque tener propiedades sin Getters es muy poco intuitiva para los desarrolladores. los Pautas de diseño de marco incluso tener una regla en contra de esto:

NO HAGA Proporcione propiedades o propiedades de solo configuración con el setter que tenga una accesibilidad más amplia que el Getter.

Es posible que también desee tener eso en consideración.

Buena suerte.

Otros consejos

Podrías usar Objeto privado Para verificar que los miembros privados se hayan actualizado correctamente después de llamar al setter

¿Los setters tienen alguna lógica?

Sí: O Abra el Getter. Java: protegido y tenga la prueba unitaria en el mismo paquete. C#: InternalsVisibletoAttribute.

No: no configure los establecedores directamente. No tiene sentido. Pruebe los métodos que usan los datos establecidos por los establecedores.

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