2017-11-15 2 views
0

私はjunitの設定でプロパティーファイルからスプリングブートを使用して値を読み取っています。 値を読み取ることができません。以下は私のコンテンツである: -junitの春の起動プロファイルのプロパティが読み取られていません

application-test.properties

my.user.name=Amar 

configファイルを作成するために、豆:

@Configuration 
@ActiveProfiles("test") 
@Profile("test") 
public class RdbmsTestConfig { 

    @Value("${my.user.name}") 
    private String name; 

    @Bean 
    public String myString(){ 
     return "Amar"; 
    } 

    @Bean 
    public PropsHolder propsHolder() { 
     PropsHolder propsHolder = new PropsHolder(); 
     propsHolder.setUserName(name); 
     return propsHolder; 
    } 
} 

私のテストクラス:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = RdbmsTestConfig.class) 
@ActiveProfiles("test") 
public class TestRoomService { 

    @Autowired 
    @Qualifier("myString") 
    private String myString; 

    @Autowired 
    private PropsHolder propsHolder; 

    @Autowired 
    private Environment env; 

    @Test 
    public void userTest() { 
     Arrays.stream(env.getActiveProfiles()).forEach(System.out::println); 
     System.out.println(propsHolder.getUserName()); 
     Assert.assertNotNull(myString); 
     Assert.assertEquals("Amar",myString); 
    } 
} 

propsHolderの値を.getUserNameは$ {my.user.name}になります

答えて

1

まず、クラスRdbmsTestConfigから@ActiveProfiles("test")を削除してください。あなたのテストでは、春の文脈としてRdbmsTestConfigが定義されています。私はあなたが実際の春のブートテストを実行しないで見ることができます。問題は、あなたのスプリング設定でPropertyPlaceholderConfigurerが設定されていないことです。したがって、SpringBootApplicationがある場合は、PropertyPlaceholderConfigurerを設定するか、@SpringBootTestをテストに追加してください。

+0

@SpringBootTestが欠落していたので、この回答をアップしました –

0

私は@Profile()を使ったことが一度もありません。あなたがしたいことをするかどうかはわかりません。しかし、私は常に@PropertySources()を使用しています。そうでなければ、コードはどのようにプロパティを探すべきかを知っていますか?

@Configuration 
@PropertySources(value = { @PropertySource("classpath:core- 
test.properties") }) 
+0

アプリケーションをテストするときに実行するいくつかのBeanと設定を設定するには、春のプロファイルを使用します。あなたが提案したアプローチに感謝します。私はすでにこれを試していましたが、それは単独では動作しますが、プロファイルでは動作しません。 –

0

私は必要なアノテーションを持っている基本テストクラスを作成しました: -

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = RdbmsTestConfig.class) 
@ActiveProfiles("test") 
@SpringBootTest 
public abstract class BastTest { } 

@ActiveProfilesは使用を使用するようにプロファイルを設定し、私は

ファイルapplication.propertiesでそれを言及する必要がいけません

私のテストクラスは今、これを拡張しています - 私のRdbmsTestConfig削除で

public class TestRoomService extends BastTest 

@ActiveProfiles注釈。

関連する問題