J'ai une classe de test d'intégration annotée avec @SpringBootTest
qui démarre le contexte complet de l'application et me permet d'exécuter mes tests. Cependant, je ne parviens pas à @Autowired
dans la classe de test elle-même. Au lieu de cela, j'obtiens une erreur :
Aucun haricot qualifiant de type 'my.package.MyHelper' n'est disponible".
Si je ne @Autowire pas ma classe d'aide, mais que je garde le code directement dans la fonction setUp, le test fonctionne comme prévu.
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Application.class)
public class CacheControlTest {
@Autowired
private MyHelper myHelper;
@Before
public void setUp() {
myHelper.doSomeStuff();
}
@Test
public void test1() {
// My test
}
}
Comment puis-je utiliser le câblage automatique de Spring à l'intérieur de la classe de test tout en utilisant également @SpringBootTest
?
En suivant les conseils de @user7294900 ci-dessous, en créant un fichier @Configuration
et l'ajouter en tête de CacheControlTest fonctionne :
@ContextConfiguration(classes = { CacheControlTestConfiguration.class })
Cependant, existe-t-il un moyen de conserver la configuration à l'intérieur du fichier CacheControlTest
elle-même ? J'ai essayé de l'ajouter à l'intérieur de ma classe de test :
public class CacheControlTest {
@TestConfiguration
static class CacheControlTestConfiguration {
@Bean
public MyHelper myHelper() {
return new MyHelper();
}
}
}
Et
public class CacheControlTest {
@Configuration
static class CacheControlTestConfiguration {
@Bean
public MyHelper myHelper() {
return new MyHelper();
}
}
}
Mais ils ne semblent pas avoir d'effet. J'obtiens toujours la même erreur. Le même bloc de configuration fonctionne cependant lorsqu'il est placé dans un fichier séparé comme indiqué ci-dessus.