【发布时间】:2019-12-17 05:15:13
【问题描述】:
我正在使用 TestNG 为我的应用程序的 REST API 编写自动化测试。该应用程序有一个 RestController,其中包含一个 @Autowired 服务类。当使用 HTTP GET 请求调用 REST 端点时,服务会查找 XML 文件的存储目录,将其内容转换为对象并将它们存储在数据库中。对于我的问题,重要的是存储目录的路径存储在 /src/main/resources/application.yml (source.storage) 中,并通过 @Value 注释导入。
现在,我在 src/test/resources/application.yml 中也有 source.storage 属性,它指向 src/test 中的另一个目录,我在其中存储我的测试 XML 文件,并将它们导入到我的测试类中@Value 再次注解。我的测试使用 HTTP GET 调用 REST 端点。但是,该服务似乎仍将 source.storage 属性绘制为主 application.yml,而我希望该值被测试 application.yml 文件中的值覆盖。换句话说,该服务尝试从应用程序存储目录中导入 XML 文件,而不是从我的测试存储中。
@ActiveProfiles 和 @TestPropertySource 似乎对我不起作用。扫描主 application.yml 的存储属性不是一种选择,因为最终 application.yml 将从 Spring Cloud Config 中提取,我不知道主 application.yml 的位置。
有没有一种方法可以让@Autowired 服务从测试 application.yml 中提取 source.storage 属性,而不是从主要的?
任何建议将不胜感激。
谢谢,彼得
【问题讨论】:
标签: rest spring-boot