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
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 :-)
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
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.
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.
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.
- 1. Wie können Memo-Funktionen getestet werden?
- 2. Wie können WCF UriTemplates Unit-getestet werden?
- 3. Wie können Meteor Apps getestet werden?
- 4. Wie können benutzerdefinierte Vorlagen-Tags in Django getestet werden?
- 5. Wie Panics getestet werden?
- 6. Wie können diese Synchronisationsmethoden effektiv Unit-getestet werden?
- 7. Wie können JSF-Bean-Methoden getestet werden, die Sitzungsparameter verwenden?
- 8. Wie können WCF-Dienste am besten getestet werden?
- 9. Kann der Rückgabewert der Haskell I/O-Funktionen getestet werden?
- 10. Sollten native Validierungen in Schienen getestet werden?
- 11. Sollten @Entity Pojos getestet werden?
- 12. Wie können verdrillte verzögerte Fehler ohne Fehler mit der Testversion getestet werden?
- 13. Ember.js: Wie Aktionen im Controller getestet werden
- 14. Wie kann getestet werden, ob der GTK + -Dialog erstellt wurde?
- 15. Controller kann nicht mit Action.async getestet werden
- 16. Wie kann MatLab vor Ort getestet werden?
- 17. Kann Google Social Login lokal getestet werden?
- 18. Atom 'spec' Dateien werden nicht getestet
- 19. Argument Ausnahmen sollten Unit Getestet sein?
- 20. Wie werden einzelne Teile der Kurve in Einheit, Echtzeit?
- 21. Wie kann die Datenbankmigration in Android getestet werden?
- 22. Wie werden alle Tests in meinem Projekt getestet?
- 23. Wie können Redux-Aktionen getestet werden, die 'redux-api-middleware' und [CALL_API] verwenden?
- 24. Wie kann meine Anwendung manuell in mehreren Browsern getestet werden?
- 25. In welchem Zweig soll die kontinuierliche Integration getestet werden?
- 26. Kann nur in SQL auf Null-Datensätze getestet werden?
- 27. Wird Mono-Touch getestet?
- 28. Testen der throws-Klausel in der Klasse, die mit Mockito getestet werden soll
- 29. Einheit der Arbeit in Nhibernate
- 30. Wie können Seiten in PostScript gecrimpt werden?
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 ...) –