Spring Boot 单元测试不适用于 application.yml

Posted

技术标签:

【中文标题】Spring Boot 单元测试不适用于 application.yml【英文标题】:Spring boot unit test not work with application.yml 【发布时间】:2016-11-13 17:28:32 【问题描述】:

我无法进行单元测试以读取 application.yml。我已经按照下面的 url 进行了回答,但它仍然无法正常工作。

Spring Boot properties in 'application.yml' not loading from JUnit Test

感谢有人可以提供帮助。谢谢。

我的代码如下:

Application.java

@SpringBootApplication
@ImportResource("classpath:app-config.xml")
public class Application 

    public static void main(String[] args) 
        SpringApplication.run(Application.class, args);
    

TestTokenGenerator.java

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringApplicationConfiguration(classes=Application.class, initializers=ConfigFileApplicationContextInitializer.class)
    @ContextConfiguration(locations="classpath:app-config-test.xml")
    public class TestTokenGenerator 

        private static final Logger log = LoggerFactory.getLogger(TestTokenGenerator.class);

        @Value("$test")
        private String testB;

        @Test
        public void testGenerate() throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException
            log.info(testB);
            log.info(tokenGenerator.generateToken());

application.yml

test: "123123"

【问题讨论】:

【参考方案1】:

例如,请参阅有关此问题的 cmets https://github.com/spring-projects/spring-boot/issues/603。

同时声明@ContextConfiguration 和 @SpringApplicationConfiguration 直接在测试类上不是 支持的。 @ContextConfiguration 的第一个实例是 为给定的测试类发现(在测试类中的一个类上) 层次结构或作为元注释)将被使用。所有其他人将 忽略。

【讨论】:

以上是关于Spring Boot 单元测试不适用于 application.yml的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 测试不适用于 Java 11

Spring boot @Qualifier 不适用于数据源

Spring Boot Autowired 存储库不适用于 SpringRunner 和 JPA 数据

Spring Boot 中的单元测试

Spring Boot 2.2.2 数据源 URL 不适用于 SQL Server 2019

单元测试 Spring Boot 应用服务层