@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
}
Я использую инъекцию весенней зависимости в своем тестовом примере. У меня проблема с порядком выполнения TestExecutionListeners. Согласно этой документации об упорядочении пользовательских TestExecutionListeners, порядок можно указать через интерфейс Ordered или аннотацию @Order и по умолчанию порядок имеет самый низкий приоритет для любого пользовательского TestExecutionListener. Однако при выполнении этого тестового класса перед любой инъекцией выполняется beforeTestClass. Я даже поставил mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS
, чтобы не пропустить TestExecutionListeners
по умолчанию. При комментировании beforeTestClass инъекция выполняется как обычно.
Мой вопрос: почему мой beforeTestClass выполняется первым? Могу ли я сказать, чтобы он выполнялся после инъекции?