Wie kann ich Spring-Abhängigkeitsinjektion in eine TestExecutionListener-Klasse verwenden, die ich geschrieben habe, die ExtendedTestExecutionListener erweitert?Spring Abhängigkeitsinjektion in Spring TestExecutionListeners funktioniert nicht
Spring DI scheint nicht mit TestExecutionListener-Klassen zu arbeiten. Beispiel der Ausgabe:
Die AbstractTestExecutionListener:
class SimpleClassTestListener extends AbstractTestExecutionListener {
@Autowired
protected String simplefield; // does not work simplefield = null
@Override
public void beforeTestClass(TestContext testContext) throws Exception {
System.out.println("simplefield " + simplefield);
}
}
Konfigurationsdatei:
@Configuration
@ComponentScan(basePackages = { "com.example*" })
class SimpleConfig {
@Bean
public String simpleField() {
return "simpleField";
}
}
Die JUnit-Testdatei:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SimpleConfig.class })
@TestExecutionListeners(mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS, listeners = {
SimpleClassTestListener.class })
public class SimpleTest {
@Test
public void test(){
assertTrue();
}
}
Wie im Code Kommentar hervorgehoben, wenn ich führe das aus, es wird "simplefield null" drucken, weil simplefield nie g ets injiziert mit einem Wert.
Ich habe auch @ComponentScan (basePackages = {"com.example *"}) in der Konfiguration hinzugefügt. –
Ich benutze nicht gern testContext.getApplicationContext(). GetBean (...). –
Ich sehe dieses Problem auch in einem neuen Projekt mit Spring Boot 1.5.2.RELEASE. –