When we use @SpringApplicationConfiguration
it will use configuration from application.yml
[properties] which in certain situation is not appropriate. So to override the properties we can use @TestPropertySource
annotation.
@TestPropertySource(
properties = {
"spring.jpa.hibernate.ddl-auto=create-drop",
"liquibase.enabled=false"
}
)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class ApplicationTest{
// ...
}
We can use properties attribute of @TestPropertySource
to override the specific properties we want. In above example we are overriding property spring.jpa.hibernate.ddl-auto
to create-drop
. And liquibase.enabled
to false
.
If you want to totally load different yml file for test you can use locations attribute on @TestPropertySource
.
@TestPropertySource(locations="classpath:test.yml")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class ApplicationTest{
// ...
}
Option 1:
You can also load different yml file my placing a yml file on test > resource
directory
Option 2:
Using @ActiveProfiles
annotation
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles("somename")
public class MyIntTest{
}
You can see we are using @ActiveProfiles
annotation and we are passing the somename as the value.
Create a file called application-somename.yml
and and the test will load this file.