首页 > 解决方案 > 在Junit测试中注入标有@Qualifier的bean

问题描述

我有以下配置类:


@Validated
@RefreshScope
@Data
@Component
@Configuration
public class AdminUserConfiguration{

    @Value("${admin.user.login}")
    private String login;
    @Value("${admin.user.password}")
    private String password;

    @Bean(name = "adminUser")
    public User getAdminUser(){
        return User.builder().login(login).password(password).build();
    }
}

和以下服务:

@Service
@RequiredArgsConstructor
public class UserService{

    private final SomeService someService;

    @Qualifier("adminUser")
    private final User adminUser;

    // some methods

}

我有我的配置测试类:

@TestConfiguration
public class AdminUserConfigurationTest{

    @Bean
    @Primary
    public User getAdminUser(){
        return User.builder().login("login").password("password").build();
    }
}

和我的测试课:


public class UserServiceTest {

    @BeforeEach
    public void init() {
        MockitoAnnotations.openMocks(this);
    }

    @Mock
    SomeService someService;

    @InjectMocks
    UserService userService;

    @Test
    public void someTest(){

    }
   
}

当我运行我的 UserServiceTest 的所有测试时,beanadminUser始终为空。我试过了 :

标签: spring-bootunit-testing

解决方案


推荐阅读