Dies wurde möglicherweise falsch codiert, aber jede Idee, wie es getan werden sollte, wird geschätzt.NPE auf Feder-Autowires Formular TestExecutionListener
Ich habe diese Klasse TestClass
die viele Serviceklasse injizieren muss. Da ich @BeforeClass
auf @Autowired
Objekte nicht verwenden kann, ergebe ich mich auf AbstractTestExecutionListener
. Alles funktionierte wie erwartet, aber wenn ich auf @Test
Blöcke bin, werden alle Objekte ausgewertet null
.
Irgendeine Idee, wie man das löst?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { ProjectConfig.class })
@TestExecutionListeners({ TestClass.class })
public class TestClass extends AbstractTestExecutionListener {
@Autowired private FirstService firstService;
// ... other services
// objects needs to initialise on beforeTestClass and afterTestClass
private First first;
// ...
// objects needs to be initialised on beforeTestMethod and afterTestMethod
private Third third;
// ...
@Override public void beforeTestClass(TestContext testContext) throws Exception {
testContext.getApplicationContext().getAutowireCapableBeanFactory().autowireBean(this);
first = firstService.setUp();
}
@Override public void beforeTestMethod(TestContext testContext) throws Exception {
third = thirdService.setup();
}
@Test public void testOne() {
first = someLogicHelper.recompute(first);
// ...
}
// other tests
@Override public void afterTestMethod(TestContext testContext) throws Exception {
thirdService.tearDown(third);
}
@Override public void afterTestClass(TestContext testContext) throws Exception {
firstService.tearDown(first);
}
}
@Service
public class FirstService {
// logic
}
Stellen Sie sicher, Service Auto-Verkabelung hat kommentierten mit sind ** Sterio-Typ-Anmerkung ** –
All Dienste verwenden 'org.springframework.stereotype.Service' Annotation. –