测试从yaml文件到列表对象的读取列表

时间:2017-09-28 08:57:10

标签: java spring testing spring-boot yaml

我试图将application-test.yaml中的列表加载到类中,但它不起作用。

这就是我的 application-test.yaml 的样子:

category-merchandiser:
-
  username: test
  password: blas3cret
  roles:
    - test
    - admin

这是我的班级:

@Configuration
@ConfigurationProperties(prefix = "category-merchandiser")
public class CategoryMerchandiserUsersConfig {

    private List<CategoryMerchandiser> users = new ArrayList<>();
    ** getters & setters **

    public static class CategoryMerchandiser {

        private String username;
        private String password;
        private List<String> roles = new ArrayList<>();

    ** getters & setters **

这就是我试图测试列表大小是否为2的方式:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CategoryMerchandiserUsersConfig.class)
public class CategoryMerchandiserUsersTest {

    @Autowired
    CategoryMerchandiserUsersConfig config;

    @Test
    public void shouldLoadApplicationYamlToClass() {
        assertThat(config.getUsers().size(), is(2));
    }
}

我的控制台输出告诉我列表为空:

java.lang.AssertionError: 
Expected: is <2>
     but: was <0>
Expected :is <2>

Actual   :<0>

我做错了什么?希望你们能帮助我。

2 个答案:

答案 0 :(得分:0)

如果您修改yml以匹配您的配置文件,它应该可以正常工作。

category-merchandiser:
  users:
    - username: test
      password: blas3cret
      roles:
        - test
        - admin

答案 1 :(得分:0)

有效!我的问题是我没有应用程序上下文。所以我把测试移到了集成测试目录中。就是这样。