JUnit aangepaste annotatie

Ik wilde een aangepaste JUnit-annotatie maken, vergelijkbaar met de verwachte tag in @Test, maar ik wil ook het annotatiebericht controleren.

Enige hints hoe dat te doen, of misschien is er iets klaar?

9

3 antwoord

JUnit 4.9 versterkte het gebruik van "regels" door de bibliotheek voor tests, waarvan ik denk dat het net zo goed werkt als een aangepaste annotatie. Bekijk TestRule als een begin punt. U kunt op basis van die interface een regel implementeren en vervolgens de annotaties @ClassRule of (methode-niveau) @Rule gebruiken om ze in uw tests in te zetten.

Een goed concreet voorbeeld is ExpectedException , die laat je uitzonderingen specificeren zoals de verwachte parameter voor @Test doet (en nog een paar).

4
toegevoegd

Als u JUnit4 uw aangepaste annotaties wilt laten opnemen, moet u uw eigen aangepaste Runner-implementatie schrijven en die vervolgens leveren aan de RunWith-annotatie in de klasse Test.

Je kunt beginnen door een kijkje te nemen naar de BlockJUnit4ClassRunner, de standaard implementatierunner voor JUnit 4 (als het geheugen me goed van pas komt).

Ervan uitgaande dat u een aangepaste annotatie genaamd @MyTest met een aangepaste runner MyRunner wilt ophalen, ziet uw testklasse er ongeveer zo uit:

@RunWith(MyRunner.class)
class Tests {
   ...
   @MyTest
   public void assumeBehaviour() {
      ...
   }
}

Het antwoord van "Reid Mac" is redelijk goed in het beschrijven van hoe een aangepaste annotatie is geïmplementeerd.

4
toegevoegd
Er is geen antwoord meer "Reid Mac" ..
toegevoegd de auteur BrunoJCM, de bron

U kunt aangepaste TestRule maken zoals vermeld bij het eerste antwoord of kunt u TestWatcher die al een methode hebben voor het verwerken van de start/finish van de test. Er is een methode van toepassing (Statement base, Description description) waarbij description eigenlijk een omslag is rond uw testmethode. Beschrijving heeft een geweldige methode getAnnotation (annotationClass ) waarmee u kunt doen wat u wilt door een aangepaste annotatie op te geven die u wilt verwerken

1
toegevoegd