@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class, loader = AnnotationConfigContextLoader.class)
@TestExecutionListeners(listeners = LoadBalancingIntegrationTest.class, mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
public class LoadBalancingIntegrationTest extends AbstractTestExecutionListener{
//...
DummyWebAppService[] dummyWebAppControllers = new DummyWebAppService[4];
int haproxyListeningPort = 8000;
//DummyWebApp
@Value("${dummyWebApp.mvnPath}")
String mavenPath;
@Value("${dummyWebApp.webAppPath}")
String webAppPath;
@Override
public void beforeTestClass(TestContext testContext) throws Exception {
dummyWebAppControllers[0] = new DummyWebAppService(mavenPath, webAppPath, 8080);
}
//..test cases follow
}
Ich verwende in meinem Testfall die Injektion mit Federabhängigkeit. Ich habe ein Problem mit der Reihenfolge der Ausführung der TestExecutionListeners. Gemäß this documentation about the ordering of custom TestExecutionListeners kann der Auftrag über die Ordered-Schnittstelle oder @Order-Annotation und by default, the order is of lowest predence for any custom TestExecutionListener angegeben werden. Beim Ausführen dieser Testklasse wird jedoch beforeTestClass vor jeder Injektion ausgeführt. Ich legte sogar mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS
, so dass keine Standard TestExecutionListeners
würde vermisst werden. Wenn Sie vorTestClass auskommentieren, wird die Injektion normal ausgeführt.Bestellung von TestExecutionListeners
Meine Frage ist, warum wird meine beforeTestClass zuerst ausgeführt? Kann ich sagen, dass es nach der Injektion ausgeführt werden soll?
Warten gelöst, wird diese Klasse soll ein Test oder eine Ausführungs Zuhörer sein? Du mischst Bedenken. – chrylis
@chrylis Ich benutze nur TestExecutionListener, um eine beforeTestClass-Methode so einzurichten, ich sehe nicht, warum ich es jetzt umgestalten sollte, werde ich tun, nachdem –
Vielleicht zu klären, mein Problem ist nicht, dass die Methoden oder Abhängigkeitsinjektion funktioniert nicht, sie sind, aber in der falschen Reihenfolge. Die Dependency-Injektion sollte zuerst und dann die beforeTestClass-Methode ausgeführt werden. –