2017-09-28 13 views
0

application-test.yamlからクラスにリストをロードしようとしていますが、動作しません。yamlファイルからlistオブジェクトへのリストの読み込み

これは私のアプリケーション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)); 
    } 
} 

私のコンソール出力は、 stは空です:

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

Actual :<0> 

私は間違っていますか?あなたたちが私を助けてくれることを願っています。

+0

誰でも助けることができますか? : – DevRock

答えて

0

私の問題は、私はアプリケーションのコンテキストがありませんでした。そこで私はテストを統合テストディレクトリに移しました。それで全部です。

0

設定ファイルと一致するようにymlを変更すると正しく動作するはずです。

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

私は試しましたが、それでも動作しません。他の提案? – DevRock

+0

あなたのテストがうまくいかない理由についての1つの問題 1.あなたが何もプロパティファイル@TestPropertySourceをロードしていない。 Yamlファイルをロードしてください。 CategoryMerchandiserUsersConfig.getUsers()からデータを書き、エンドポイントして返すと、うまくいくはずです。 – mdeterman

関連する問題