首页 > 解决方案 > 未注入来自 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();
  }

}

但是没有注入SystemPriceSettingServicebean 。我的设置有什么问题?

标签: javaspringconfigurationmockito

解决方案


您不使用 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>

推荐阅读