JUnit で、YAML を読む処理をテストする時、@EnableAutoConfiguration を忘れずに!

YAML を読む処理を JUnit テストする時、( Spring Batch での話 )
@ContextConfiguration で、イニシャライザ指定
 initializers = ConfigFileApplicationContextInitializer.class
を付けるだけでなく、
@EnableAutoConfiguration が必要

例)
application.yml に書いた、設定

address:
  group:
    info1: A
    info2: 120
aaa:
  bbb: ABC

読みだすクラス Setting

import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@ConfigurationProperties(prefix="address")
@Component
public class Setting{
   public Map<String, Object> group;

   @Value("${aaa.bbb}")
   public String name;

   public void setGroup(Map<String, Object> m) {
      group = m;
   }
   public Map<String, Object> getGroup(){
      return group;
   }
}

↑ を使用する Tasklet

@Component
public class SampleTasklet implements Tasklet {
   @Autowired
   private Setting setting;
   @Override
   public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
      // TODO 
      return RepeatStatus.FINISHED;
   }
   public Setting getSetting() {
      return setting;
   }
}

この Tasklet をテストする時に、YAML を読んできてる Setting が
想定どおり読み込ませるかテストする JUnitソース

import java.util.Map;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import org.springframework.test.context.junit4.SpringRunner;

import org.sample.Setting;
/**
 * SampleTaskletTest
 */
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {Setting.class}, initializers = ConfigFileApplicationContextInitializer.class)
@SpringJUnitConfig
@EnableAutoConfiguration
class SampleTaskletTest{
   @Autowired
   public ApplicationContext ctx;
   private SampleTasklet tasklet;

   @BeforeEach
   void setUp() throws Exception{
      tasklet = ctx.getAutowireCapableBeanFactory().createBean(SampleTasklet.class);
   }

   @Test
   void testExecute(){
      assertTrue(true);
      Setting setting = tasklet1.getSetting();
      assertEquals("ABC", setting.name);
      Map<String, Object> map = setting.group;
      assertEquals("A", map.get("info1"));
      assertEquals(120, map.get("info2"));

      // TODO
   }
}

この @EnableAutoConfiguration を付け忘れると、1階層 Nest のYAML書式が読めても、
@ConfigurationProperties(prefix="xxxxx") で指定するMap が読まれなかったりする。

@EnableAutoConfiguration