2017-06-27 18 views
0

春ブーツ+ jdbctemplateスプリングブートテストでプロパティ値が認識されないのはなぜですか?

@Configuration 
public class MultiDBConfig implements BeanPostProcessor{ 

    @Value("${spring.datasource.test-while-idle}") 
    private boolean testWhileIdle; 
    //... 
    @Override 
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { 
     if(bean instanceof org.apache.tomcat.jdbc.pool.DataSource){ 
      org.apache.tomcat.jdbc.pool.DataSource ds = (org.apache.tomcat.jdbc.pool.DataSource) bean; 
      ds.setTestWhileIdle(testWhileIdle); 

     } 
     return bean; 
    } 
} 

と私はUserDaoTestを持っていると私はエラー

Caused by: java.lang.IllegalArgumentException: Invalid boolean value [${spring.datasource.test-while-idle}] 
    at org.springframework.beans.propertyeditors.CustomBooleanEditor.setAsText(CustomBooleanEditor.java:123) 
下になったテストを実行すると、最初に私はちょうど負荷の他のコンポーネント

@RunWith(SpringRunner.class) 
@JdbcTest(includeFilters = @ComponentScan.Filter(type= FilterType.ASSIGNABLE_TYPE,value=UserDao.class)) 
@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) 
@Import(MultiDBConfig.class) 
public class UserDaoTest {} 

せずに、それをテストしたいです

変更の場合UserDaoTest

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class UserDaoTest {...} 

大丈夫です。

なぜそれが解決されないのですか?spring.datasource.test-while-idleはどうすれば解決できますか?

答えて

0

また、そのプロパティを保持するapplicaton.propertiesまたはapplication.ymlファイルをインポートする必要があります。

+0

ですがどうですか?私は '@ TestPropertySource'と' @ PropertySource'を試しましたが、両方とも動作しません。 – zhuguowei

+0

試してみてくださいhttp://www.javarticles.com/2016/02/spring-testpropertysource-annotation-example.html – ndrone

関連する問題