Tengo una clase de prueba de integración anotado con @SpringBootTest
la que se pone en marcha el contexto de aplicación plena y me permite ejecuto mis pruebas. Sin embargo soy incapaz de @Autowired
frijoles en la misma clase de prueba. En su lugar aparece un error:
Sin frijol clasificación del tipo 'my.package.MyHelper' disponible".
Si no @Autowire mi clase de ayuda, pero mantener el código directamente dentro de la función de configuración, la prueba funciona como se espera.
@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
}
}
¿Cómo puedo hacer uso de la primavera autowiring dentro de la clase de prueba al mismo tiempo usando @SpringBootTest
?
Siguiendo consejos @ user7294900 a continuación, crear una separada @Configuration
de archivos y añadir esta en la parte superior de CacheControlTest funciona:
@ContextConfiguration(classes = { CacheControlTestConfiguration.class })
Sin embargo ¿hay alguna manera de mantener la configuración dentro de la CacheControlTest
propia clase? He intentado agregar dentro de mi clase de prueba:
public class CacheControlTest {
@TestConfiguration
static class CacheControlTestConfiguration {
@Bean
public MyHelper myHelper() {
return new MyHelper();
}
}
}
Y
public class CacheControlTest {
@Configuration
static class CacheControlTestConfiguration {
@Bean
public MyHelper myHelper() {
return new MyHelper();
}
}
}
Pero ellos no parecen tener ningún efecto. Sigo teniendo el mismo error. El mismo bloque de configuración funciona cuando se coloca en un archivo separado como se mencionó anteriormente, aunque.
Añadir ContextConfiguration para su clase de prueba:
@ContextConfiguration(classes = { CacheControlTestConfiguration.class })