Saltar al contenido

Las propiedades de Spring Boot en ‘application.yml’ no se cargan desde JUnit Test

Esta es la contestación más completa que encomtrarás brindar, pero obsérvala pausadamente y analiza si se adapta a tu trabajo.

Solución:

Prueba esto:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestApplication.class, 
    initializers = ConfigFileApplicationContextInitializer.class)
public class SomeTestClass 
    ...

EDITAR:

Para Spring Boot versión 1.5+, SpringApplicationConfiguration fue eliminado a favor de SpringBootTest o uso directo de SpringBootContextLoader.

Todavía puedes usar initializers parámetro con ContextConfiguration anotación.

El truco para cargar ningún archivo yml personalizado en SpringBoot 2.0 sin usar @SpringBootTest

  • crear algún archivo yml en testresources
  • Usar ConfigFileApplicationContextInitializer y spring.config.location propiedad

Código de ejemplo:

@RunWith(SpringRunner.class)
@ContextConfiguration(
    classes =  MyConfiguration.class, AnotherDependancy.class ,
    initializers = ConfigFileApplicationContextInitializer.class )
@TestPropertySource(properties =  "spring.config.location=classpath:myApp-test.yml" )
public class ConfigProviderTest 
    @Autowired
    private MyConfiguration myConfiguration; //this will be filled with myApp-test.yml 

   @Value("$my.config-yml-string")
   private String someSrting; //will get value from the yml file.


Para JUnit 5 use el @ExtendWith(SpringExtension.class) anotación en lugar de @RunWith(SpringRunner.class)

Aquí hay otra manera: [Spring Boot v1.4.x]

@Configuration
@ConfigurationProperties(prefix = "own")
public class OwnSettings 

    private String name;
    Getter & setters...



import org.springframework.boot.test.context.SpringBootTestContextBootstrapper;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@BootstrapWith(SpringBootTestContextBootstrapper.class)
public class OwnSettingsTest 

  @Autowired
  private OwnSettings bean;

  @Test
  public void test() 
    bean.getName();
  

Esto funciona SOLO si también existe el archivo ‘application.properties’.

por ejemplo, proyecto maven:

src/main/resources/application.properties [ The file can be empty but it’s mandatory! ]

src/main/resources/application.yml [here’s your real config file]

Te mostramos las comentarios y valoraciones de los lectores

Si crees que ha sido de ayuda nuestro post, sería de mucha ayuda si lo compartes con más entusiastas de la programación así nos ayudas a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *