The class to test
@Configuration
@ConfigurationProperties(prefix = "scheduler")
@Data
public class SchedulerConfig {
private String rate;
private final Activetime activetime = new Activetime();
@Data
public static class Activetime {
private int starts;
private int ends;
}
}
The unit test
class SchedulerConfigTest {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
@EnableConfigurationProperties(SchedulerConfig.class)
static class DummyConfigurationProps {
}
@Test
void shouldConfigureScheduler() {
this.contextRunner
.withUserConfiguration(DummyConfigurationProps.class)
.withPropertyValues("scheduler.rate=42","scheduler.activetime.starts=6","scheduler.activetime.ends=22")
.run(context -> {
SchedulerConfig schedulerConfig = context.getBean(SchedulerConfig.class);
assertThat(schedulerConfig).isNotNull();
assertThat(schedulerConfig.getRate()).isEqualTo("42");
assertThat(schedulerConfig.getActivetime().getStarts()).isEqualTo(6);
assertThat(schedulerConfig.getActivetime().getEnds()).isEqualTo(22);
});
}
}