Comment utiliser l'injection de dépendances Spring dans une classe TestExecutionListener que j'ai écrite en développant AbstractTestExecutionListener? Spring DI ne semble pas fonctionner avec les classes TestExecutionListener.L'injection de dépendances de printemps dans Spring TestExecutionListeners ne fonctionne pas
Exemple de question:
Le 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);
}
}
fichier de configuration:
@Configuration
@ComponentScan(basePackages = { "com.example*" })
class SimpleConfig {
@Bean
public String simpleField() {
return "simpleField";
}
}
Le fichier de test JUnit:
@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();
}
}
Comme l'a souligné dans le commentaire de code, quand je lancez ceci, il affichera "simplefield null" car simplefield ne g ets injectés avec une valeur.
J'ai également ajouté @ComponentScan (basePackages = {"com.example *"}) dans la configuration. –
Je n'aime pas utiliser testContext.getApplicationContext(). GetBean (...). –
Je vois ce problème aussi dans un nouveau projet avec Spring Boot 1.5.2.RELEASE. –