TestPropertyValues
на самом деле не предназначен для @SpringBootTest
.Это гораздо полезнее, когда вы пишете тесты, которые вручную создают ApplicationContext
.Если вы действительно хотите использовать его с @SpringBootTest
, это можно сделать с помощью ApplicationContextInitializer
.Примерно так:
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(initializers = PropertyTest.MyPropertyInitializer.class)
public class PropertyTest {
@Autowired
private ApplicationContext context;
@Test
public void test() {
assertThat(this.context.getEnvironment().getProperty("foo")).isEqualTo("bar");
}
static class MyPropertyInitializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
TestPropertyValues.of("foo=bar").applyTo(applicationContext);
}
}
}
В собственном тесте Spring Boot совсем немного используется TestPropertyValues
.Например, applyToSystemProperties
очень полезен, когда вам нужно установить системные свойства, и вы не хотите, чтобы они случайно оставлялись после завершения теста (см. Пример EnvironmentEndpointTests ).Если вы будете искать в базе кода, вы найдете немало других примеров того, как она обычно используется.