Wie sollte ein benutzerdefinierter Guice-Scope in TestNG integriert werden?

9

Wir verwenden einen benutzerdefinierten Guice-Bereich, @TestScoped , für einige unserer JUnit-Tests, die für eine einzelne Testmethode bestehen, und einen JUnit @Rule , um den Bereich entsprechend einzugeben und zu beenden. Es sieht so aus:

%Vor%

Wir beginnen, TestNG für einige unserer Tests in anderen Projekten zu verwenden, und wir möchten ein ähnliches Muster haben. Bisher haben wir uns das ausgedacht:

%Vor%

Es gibt ein paar Probleme mit diesem Design:

  • Im Gegensatz zu JUnit verwendet TestNG für jede Methode dieselbe Instanz der Testklasse. Das heißt, wir müssen Provider<Thing> anstelle von nur Thing injizieren, was unangenehm ist.

  • Aus irgendeinem Grund wird CustomTestNGListener in allen unseren Tests ausgeführt, sogar in solchen, die diese @Listeners(CustomTestNGListener.class) -Anmerkung nicht haben. Ich habe mich darum gekümmert, indem ich explizit im Annotator nach dieser Annotation gesucht habe, aber es fühlt sich an wie ein Hack (obwohl ich das sehe MockitoTestNGListener macht das gleiche).

Hat jemand, der sich mit TestNG vertrauter fühlt, irgendwelche Vorschläge zum Umgang mit diesen Problemen?

    
Tavian Barnes 05.12.2014, 18:12
quelle

1 Antwort

0

Anstelle von

%Vor%

In TestNG können Sie

verwenden %Vor%

Oder ruf einfach thingProvider.get() in doBeforeTest() an, es ist besser, du hast eine Menge @ Test

%Vor%     
Viacheslav Vedenin 15.12.2015 23:30
quelle

Tags und Links