java - 未注入来自 JUnit 5 测试类中的测试配置文件的 Spring bean
问题描述
我想在我的jUnit 5测试类中使用
@SpringBootTest
@RunWith(JUnitPlatform.class)
@ActiveProfiles("localtest")
class WorkreportDbRepositoryTest {
@Autowired
private SystemPriceSettingService systemPriceSettingService;
// the rest omitted ....
}
在配置中为测试环境创建的 bean:
@Profile("localtest")
@Configuration
public class TestConfig {
@Bean
public SystemPriceSettingService systemPriceSettingService(){
return new MemoryPriceSettingService();
}
}
但是没有注入SystemPriceSettingService
bean 。我的设置有什么问题?
解决方案
您不使用 Spring 感知的 JUnit Runner。所以没有创建 Spring 上下文。
您应该将其替换为测试类上的注释,例如:
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@SpringBootTest
@ExtendWith(SpringExtension.class)
@ActiveProfiles("localtest")
class WorkreportDbRepositoryTest { ...}
并添加此依赖项以便能够使用SpringExtension
:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>2.18.0</version> <!-- your mockito version-->
<scope>test</scope>
</dependency>
推荐阅读
- python - 如何将 3D numpy 数组转换为 nibabel 中的 nifti 图像?
- django - 在 Django 上生成校验和哈希(Paytm 网关)时出错
- java - 连接到 API 时改造应用程序崩溃
- python - 如何在python的数据预处理步骤中拆分日期并保持日期格式为浮点数?
- javascript - JS | 通过嵌套的“for of”循环递归
- php - 使用 php 将 excel/csv 文件导入 phpmyadmin
- python - 如何从 Spyder (python) Anaconda 调用 R 代码?
- java - 如何将字符串和 int 绑定在一起。爪哇
- ruby-on-rails - 当我单击主页上的链接时,在 Communities#show 中获取 ruby rails 错误消息 NoMethodError
- flutter - DragTarget 小部件没有响应