Ich weiß nicht, ob Sie es geschafft haben, herauszufinden, was ich gerade aus dem Titel heraus versuche, also werde ich versuchen, es mit einem Beispiel zu erklären.
Angenommen, ich habe meine eigene Annotation @VerifySomething
Und ich habe eine Testklasse für diese Annotation erstellt, um sicherzustellen, dass sie funktioniert.
Nehmen wir jetzt an, dass ich die Klasse SomeClass
mit dem Feld something
mit der Anmerkung @VerifySomething
So weit so gut, aber jetzt möchte ich test class
für meine SomeClass
erstellen, aber ich sehe keinen Sinn darin, alle Testfälle von etwas zu verifizieren, da ich bereits überprüft habe, dass @VerifySomething
so funktioniert sollte in der Klasse, die diese Annotation testet, aber ich muss sicherstellen, dass Feld etwas tatsächlich @VerifySomething
Annotation hat ohne Kopieren alle diese Testfälle einfügen.
Also meine Frage ist, gibt es eine Möglichkeit, zu überprüfen, ob ein Feld eine oder mehrere erforderliche Annotation hat, ohne Testfälle zu schreiben, die ich bereits in Annotation-Test-Klasse geschrieben habe, um sicherzustellen, dass es wie es soll.
Sie können getAnnotation
verwenden, um zu bestimmen, ob eine bestimmte Annotation für das Feld vorhanden ist, die die Annotation-Klasse als Parameter verwendet:
Hier ist eine Methode, die Sie verwenden können, um zu verifizieren, dass eine Klasse ein Feld hat, das mit einer gegebenen Anmerkung versehen ist:
%Vor%Ich bin mir nicht sicher, ob ich dem Beispiel folge, aber falls Sie überprüfen möchten, ob eine Klasse und / oder ihre Eigenschaften eine Bean-Validierungsbeschränkung haben, können Sie die Metadaten-API verwenden. Der Einstiegspunkt ist Validator # getConstraintsForClass (SomeClass.class) . Sie erhalten einen BeanDescriptor . Von dort aus können Sie _beanDescriptor # getConstraintsForProperty ("something") ausführen, wodurch Sie einen PropertyDescriptor erhalten. Über propertyDescriptor # getConstraintDescriptors () erhalten Sie dann eine Menge ConstraintDescriptors , mit der Sie überprüfen können, ob eine Constraint-Annotation verwendet wurde.
Hinweis: Dies ist eine Bean-Validierungs-spezifische Lösung im Vergleich zur generischen Reflektion wie in der obigen Antwort, aber es hängt davon ab, was Sie wirklich wollen. Um ehrlich zu sein, verstehe ich deinen Anwendungsfall noch nicht ganz.
Tags und Links java hibernate-validator