Déterminer si le terrain est annoté avec des annotations
Je ne sais pas si vous avez réussi à comprendre ce que je suis en train de faire juste dans le titre donc je vais essayer de l'expliquer avec un exemple
Laisse supposer que j'ai créé mon propre annotation @VerifySomething
Et j'ai créé la classe de test pour que l'annotation pour vérifier qu'il fonctionne.
Maintenant laisse supposer que j'ai la classe SomeClass
avec le champ something
notées avec l'annotation @VerifySomething
class SomeClass {
@VerifySomething
String something;
}
C'est très bien, mais maintenant je veux créer test class
pour mon SomeClass
cependant, je ne vois pas l'intérêt de vérification de tous les cas de tests de quelque chose que j'ai déjà vérifié que @VerifySomething
fonctionne comme il se doit dans une classe de tests de cette annotation, cependant j'ai besoin pour s'assurer que le champ de quelque chose, en réalité, a @VerifySomething
annotation sans le copier-coller tous ces cas de test.
Donc ma question est, est-il un moyen de vérifier si le terrain a une ou plusieurs annotations sans écrire des cas de test je l'ai déjà écrit dans l'annotation de la classe de test pour s'assurer qu'il fonctionne comme il se doit.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
getAnnotation
afin de déterminer si il y a une Annotation sur le terrain, qui prend l'annotation de la classe en tant que paramètre:Ici est une méthode que vous pouvez utiliser pour vérifier qu'une classe possède un champ annoté par l'annotation:
Je ne suis pas sûr que je suis, mais dans le cas où vous voulez vérifier si une classe et /ou ses propriétés ont un Haricot contrainte de Validation, vous pouvez utiliser les méta-données de l'api. Le point d'entrée est Validateur#getConstraintsForClass(SomeClass.class). Vous obtenez un BeanDescriptor. À partir de là, vous pouvez faire _beanDescriptor#getConstraintsForProperty("quelque chose") qui vous donne un PropertyDescriptor. Via propertyDescriptor#getConstraintDescriptors (), vous obtenez alors un ensemble de ConstraintDescriptors que vous pouvez itérer pour vérifier qu'une contrainte d'annotation a été utilisé.
Remarque, c'est un Bean Validation de la solution par rapport aux génériques de réflexion comme dans la réponse ci-dessus, mais cela dépend de ce que vous êtes vraiment après. Pour être honnête, je ne comprends pas très bien votre cas d'utilisation, encore.