Bestimmen Sie, ob das Feld mit einer bestimmten Anmerkung versehen ist

8

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

erstellt

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

verknüpft habe %Vor%

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.

    
Dave 04.03.2013, 20:33
quelle

2 Antworten

11

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:

%Vor%

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%     
Pavla Nováková 04.03.2013, 21:16
quelle
2

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.

    
Hardy 05.03.2013 10:28
quelle

Tags und Links