2009-03-24 17 views
14

Ich habe vor kurzem begonnen, meine eigenen Anmerkungen zu erstellen und TDD/BDD zu spielen, ich würde Unit-Tests meine Anmerkungen testen, um eine klare Spezifikation für sie zu schaffen. Da aber Annotationen im Grunde nur schicke Interfaces sind, die meines Wissens nicht direkt instanziiert werden können, gibt es keine Möglichkeit, eine Annotation zu testen.Können Java-Anmerkungen in der Einheit getestet werden?

Antwort

8

Es ist nicht etwas, wofür ich normalerweise Tests schreiben würde, aber Sie könnten einfach eine Reihe von Testklassen erstellen, die die Annotation verwenden und missbrauchen, um zu testen, dass sie ihre Mitgliedswerte speichert, dass sie die richtigen Standardwerte usw. hat.

Dies funktioniert nur auf Runtime-Annotationen, die natürlich auf den richtigen Zielen angegeben sind.

Meiner Erfahrung nach sind Anmerkungen selbst selten interessant genug, um Komponententests zu rechtfertigen - normalerweise ist es der Code, der sie verwendet, der getestet werden muss. Aber dann bin ich nicht von der 100% Code Coverage Denkschule :-)

+1

Es wäre toll, Testkompilierzeit-Annotationen zu testen - zum Beispiel: http://code.google.com/p/javadude/ Wiki/Anmerkungen. Das ist ein großer zu testender Schmerz! (Ich habe "Test" und "erwartete" Kopien eines Projekts, das ich nach der Kompilierung vergleiche ...) –

0

Sie können sie nicht direkt testen, da, wie Sie angemerkt haben, nichts zu testen ist. Sie könnten ein paar Dinge beweisen, aber:

  • Objekte mit Anmerkungen im Code haben alle erwarteten Anmerkungen zur Laufzeit
  • Standardwerte haben
  • Die Anmerkungen binden an die Dinge initialisiert Sie sie
erwarten

Wenn Sie Komponententest durchführen, können Sie unter anderem nachweisen, dass Ihre Implementierung der Schnittstelle entspricht. Wenn also eine Anmerkung ein bestimmtes Verhalten oder bestimmte Eigenschaften impliziert (z. B. Serializable Dinge sollten wirklich serialisierbar sein), möchten Sie dies auch in Ihren Tests darstellen.

1

Sie können Unit testen, ob Ihre Annotationsdefinition in Ordnung ist: Kann sie auf den gültigen Satz von Elementen angewendet werden, ist sie zur Laufzeit verfügbar, falls erforderlich, wird der Standardwert korrekt initialisiert? Dann testen Sie später die Einheit, die Ihre Anmerkung verarbeitet.

8

Anmerkungen haben einige Auswirkungen (ansonsten wäre es sinnlos, sie zu verwenden). Testen Sie also nicht die Präsenz der Anmerkung, sondern den Effekt, den sie haben sollte.

Verwandte Themen