Frage

Ich habe vor kurzem angefangen habe meine eigenen Anmerkungen zu schaffen und TDD zum Sport / BDD, ich Einheit testen meine Anmerkungen wollen würde eine klare Spezifikation für sie zu schaffen. Da jedoch Anmerkungen grundsätzlich nur Phantasie-Schnittstellen sind, die mein Wissen nicht wirklich direkt instanziert werden, ist es eine Möglichkeit, kurze Reflexion zu Unit-Test eine Anmerkung?

War es hilfreich?

Lösung

Es ist nicht etwas, würde ich in der Regel Tests schreibt für, aber man konnte einfach eine Reihe von Testklassen erstellen, die die Anmerkung benutzen und missbrauchen, zu testen, ob es seine Mitgliedswerte speichert, dass es die richtigen Standardwerte usw. hat.

Dies wird nur auf Runtime Anmerkungen arbeiten, die auf den richtigen Zielen natürlich specfied werden.

Nach meiner Erfahrung Annotationen sich selten interessant genug sind, um Unit-Tests zu rechtfertigen - es ist in der Regel der Code, der sie verwendet, die testen muss. Aber dann bin ich nicht von der 100% Code Coverage Denkschule: -)

Andere Tipps

Anmerkungen haben einen gewissen Einfluss (sonst wäre es sinnlos, sie zu benutzen). So testet nicht die Anmerkung Anwesenheit aber die Wirkung es haben sollte.

Sie können Unit-Test, ob Ihre Anmerkung Definition ist ok: kann es in den gültigen Satz von Elementen angewandt werden, ist es zur Laufzeit zur Verfügung, wenn erforderlich, wird der Standardwert korrekt initialisiert? Dann später, Einheit der Klassen testen, die Ihre Anmerkung verarbeiten werden.

Sie können sie nicht direkt da testen, wie Sie erwähnt, gibt es nichts, es zu testen. Sie könnten ein paar Dinge beweisen, aber:

  • Objekte mit Anmerkungen im Code haben alle erwarteten Anmerkungen zur Laufzeit
  • Standardwerte initialisiert wurden
  • binden Die Anmerkungen zu den Dingen, die Sie ihnen zu
  • erwarten

Wenn Sie Unit-Test, eines der Dinge, die man nachweisen kann, ist, dass Ihre Implementierung der Schnittstelle entspricht. Wenn also eine Anmerkung ein bestimmtes Verhalten oder Eigenschaften (sollte zB Serializable Dinge wirklich sein serializable) impliziert, Sie würden dies in Ihren Tests darstellen wollen, auch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top