2009-03-24 10 views
14

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

8

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% :-)

+1

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 ...) –

0

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.

1

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.

8

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.

Cuestiones relacionadas