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:
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?
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