personalizados - propiedades java beans
¿Los objetos de dominio y los JavaBeans simples deberían ser probados en unidades? (11)
Creo que esa es una de esas preguntas que todo el mundo se pregunta a sí mismo.
Pero considere esto: la lógica interna de los accesorios ahora es completamente simple, pero puede cambiar en el futuro y, lo que es mucho más importante, tendrá la libertad de cambiarlo a lo que desee si tiene pruebas para los métodos. Entonces, obtienes libertad y confianza por medio de un par de testcases. Suena como un buen negocio, ¿eh?
¿Los JavaBeans simples que tienen getters y setters simples se prueban en unidades?
¿Qué hay de los Frijoles con algo de lógica en getters y setters?
Deberías probar cosas que tienen algún significado. Getters y setters comúnmente no contienen ninguna lógica y solo se usan en Java por la falta de propiedades. Creo que probarlos es tan estúpido como comprobar que Java devuelve un valor cada vez que evalúas "ax".
Si el accesodor tiene lógica, depende de usted decidir el umbral. Si tu equipo es lazish es mejor probar toda la lógica. Si es más disciplinado, es mejor encontrar una proporción que no te haga escribir demasiadas pruebas repetitivas.
Si no vale la pena probarlo, no vale la pena escribirlo.
Eso no siempre significa que debes escribir pruebas. A veces significa que deberías eliminar el código. ¿Necesitas estos frijoles? ¿Realmente hacen algo importante? Si los necesita, debe escribir pruebas. Si no, elimina el código y vive una vida más feliz sabiendo que tienes menos para mantener.
Solo tienes que probar las cosas que quieres que funcionen correctamente.
(Perdón por quien te robé esa cita)
si solo es un getter / setter sin cambiar nada a los valores, diría que no hay necesidad de probar. Si hace algo de lógica, algunas pruebas simples de unidad proporcionarán algo de seguridad.
Como ya dijo Maxim: tener pruebas no agregará funcionalidad extra a su aplicación, pero le permitirá realizar cambios con más confianza. Para determinar qué clases / métodos se deben probar en una unidad, siempre me hago dos preguntas:
- ¿Se importa este fragmento de código en relación con la funcionalidad general?
- ¿Esta pieza de código probablemente cambiará a lo largo de la vida de esta aplicación?
Si ambas preguntas se responden con sí, es necesaria una prueba unitaria.
En mi opinión, el propósito de escribir pruebas unitarias es probar la lógica comercial de la unidad en prueba. Por lo tanto, si no hay lógica de negocios (por ejemplo, cuando un getter simplemente devuelve un valor o un setter lo establece) entonces no tiene sentido escribir una prueba. Sin embargo, si hay alguna lógica (getter cambia los datos de alguna manera antes de devolverlos), entonces sí, debe tener una prueba unitaria. Como regla general, creo que no se deben escribir pruebas para beans que no contengan ninguna lógica comercial.
Si tiene una interfaz externa y contiene el código que escribió una persona (en lugar de ser generado automáticamente por el IDE o el compilador), definitivamente debe probarse.
Si una o ambas condiciones no se cumplen, entonces se trata de una zona gris y se reduce a una cuestión de tipo "cinturón y tirantes" de cuán cuidadoso sientes la necesidad de ser.
Otra regla general (similar a lo que otros han dicho) es "probar cualquier cosa que pueda romperse". Para mí, eso excluye getter y setters autogenerados, pero incluye escritos a mano que contienen algo de lógica.
No debe escribir pruebas que:
- Pruebe el idioma o el IDE (es decir, getters y setters generados automáticamente)
- No agregue ningún valor a su arnés de prueba y mate su entusiasmo por las Pruebas unitarias
Lo mismo se aplica a los objetos .NET que solo tienen propiedades (a veces llamados objetos ''Info'').
En un mundo ideal, tendrías una cobertura de prueba del 100%, pero en la práctica esto no va a suceder. Por lo tanto, gaste el dinero del cliente donde agregará el mayor beneficio, es decir, escribir pruebas para las clases con estado complejo y comportamiento.
Si su JavaBean se vuelve más interesante, puede agregar un caso de prueba más adelante. Uno de los problemas comunes asociados con Unit Testing / TDD es la creencia errónea de que todo debe ser perfecto la primera vez.
¿Cómo se puede refactorizar de forma segura el código no probado? ¿Qué sucederá cuando cambie su pojo de frijol si no tiene pruebas? ¿Estás creando un modelo de dominio anémico ?