Recientemente he comenzado a crear mis propias anotaciones y para usar TDD/BDD, quisiera probar mis anotaciones para crear una especificación clara para ellas. Sin embargo, dado que las anotaciones son básicamente meras interfaces que, por lo que sé, no pueden ser creadas directamente, ¿hay algún modo de reflexión para probar una anotación?¿Pueden las anotaciones Java ser unitarias?
Respuesta
No es algo para lo que generalmente escribiría pruebas, pero podría simplemente crear un conjunto de clases de prueba que usan y abusan de la anotación, para probar que está almacenando sus valores de miembro, que tiene los valores predeterminados correctos, etc.
Esto solo funcionará en las anotaciones en tiempo de ejecución especificadas en los objetivos correctos, por supuesto.
En mi experiencia, las anotaciones en sí mismas rara vez son lo suficientemente interesantes como para justificar las pruebas unitarias; por lo general, es el código que las utiliza las que necesitan pruebas. Pero entonces no soy de la escuela de pensamiento de cobertura del código del 100% :-)
No puede probarlos directamente ya que, como ha notado, no hay nada que probar. Se podría probar algunas cosas, sin embargo:
- objetos con anotaciones en el código han cualquier anotación esperados en tiempo de ejecución
- Los valores por defecto han sido inicializados
- Las anotaciones se unen a las cosas que esperas que
Cuando prueba la unidad, una de las cosas que puede probar es que su implementación se ajusta a la interfaz. Por lo tanto, si una anotación implica cierto comportamiento o propiedades (por ejemplo, Serializable
las cosas realmente deberían ser serializables), también debería representar esto en sus pruebas.
Puede probar la unidad si la definición de la anotación es correcta: ¿se puede aplicar al conjunto de elementos válido, está disponible en tiempo de ejecución si es necesario, se inicializa correctamente el valor predeterminado? Luego, más adelante, prueba la clase que procesará tu anotación.
Las anotaciones tienen algún impacto (de lo contrario, sería inútil usarlas). Así que no pruebes la presencia de la anotación, pero el efecto que debería tener.
- 1. ¿Deberían todas las pruebas unitarias ser exitosas?
- 2. ¿Por qué las anotaciones Java?
- 3. ¿Las preferencias compartidas pueden ser privadas?
- 4. ¿Pueden las fibras de rubí ser concurrentes?
- 5. las plantillas pueden no ser "virtuales"
- 6. Anotaciones de Java Adapter
- 7. ¿Mantenibilidad de las anotaciones de Java?
- 8. iOS - MKMapView - Anotaciones pueden arrastrar
- 9. ¿Pueden las pruebas unitarias implementarse efectivamente con un desarrollo ágil?
- 10. No se pueden depurar las pruebas unitarias con resharper testrunner
- 11. ¿Cuándo se ejecutan las anotaciones de Java?
- 12. ¿Pueden los parámetros ser constantes?
- 13. anotaciones Java
- 14. ¿Las claves de las matrices asociativas javascript deben ser cadenas, o pueden ser cualquier objeto?
- 15. pruebas unitarias MSTEST pueden agrupar en categorías
- 16. Anotaciones en las interfaces?
- 17. ¿Pueden las especializaciones de una función de plantilla ser virtuales?
- 18. dbus_bus_request_name(): las conexiones no pueden ser propietarias del servicio
- 19. ¿Pueden las librerías F # core ser aprobadas por SQLCLR?
- 20. ¿Por qué las propiedades no pueden ser de solo lectura?
- 21. ¿Pueden las estructuras realmente no ser nulas en C#?
- 22. ¿Cómo trata el compilador las anotaciones?
- 23. ¿Utiliza anotaciones Java?
- 24. Valores de las anotaciones en Java proporcionadas de manera dinámica
- 25. ¿Cómo hago las anotaciones Java de vim indent correctamente?
- 26. ¿Dónde están las pruebas unitarias para clases Java "nativas"?
- 27. Java anotaciones no trabaja
- 28. Mockito Testcase ignora las anotaciones
- 29. ¿Por qué las clases de Java no heredan las anotaciones de las interfaces implementadas?
- 30. anotaciones de registro para Java
Sería grandioso probar las anotaciones en tiempo de compilación, por ejemplo: http://code.google.com/p/javadude/ wiki/Anotaciones. ¡Estos son un gran dolor para probar! (Tengo copias de "prueba" y "esperadas" de un proyecto que comparo después de la compilación ...) –