¿Es posible marcar dos anotaciones como mutuamente excluyentes?Anotaciones mutuamente excluyentes
Tengo un corredor JUnit personalizada y quiero para asegurarse de que si una prueba está marcado con mi anotación @Custom
marcándolo con @Test
arrojará (preferentemente) un error de compilación o (preferiblemente menos) un error de ejecución.
La razón por la que deseo esto es que @Custom
es básicamente @Test
pero con algún preprocesamiento adicional antes de ejecutar la prueba. Y, tal como lo he codificado, para cada etiqueta personalizada (sí, hay más de una), la prueba se ejecutará tantas veces con el preproceso correspondiente cada vez. Por lo tanto, que se ejecute para @Test
tampoco tiene sentido ya que esa prueba debe tener algún preprocesamiento.
Y, sí, quiero admitir tanto @Custom
como @Test
en mi marco (aunque no para el mismo método de prueba).
Bueno, puede implementarlo trivialmente como un error de tiempo de ejecución; durante el código que procesa su '@ Custom', simplemente verifique si hay una' @ Test' adicionalmente presente. No creo que esto sea posible en tiempo de compilación, sin el uso de procesadores de anotación; un área de dolor que probablemente no valga la pena. – FauxFaux
Una herramienta de análisis estático como PMD puede ayudar aquí. –
intente esto http://stackoverflow.com/questions/378616/can-i-generate-a-compile-time-error-based-on-the-type-of-the-field-being-annotat – Shahzeb