如何解决Spring Boot:无法对依赖@Qualifier注释的服务的控制器进行junit测试
我们有一个接口的两个实现类,我正在使用@qualifier选择一个实现,它可以正常工作。但是在kotlin junit测试中,当junit test试图在控制器中创建EmailService bean时我遇到了错误。 qualifier明确提到要使用一种实现时,无法解析使用哪种实现。我们正在使用jupiter junit,这是kotlin测试类。
controller class:
@RestController
public class ProfileController {
//injecting one of the implementation of EmailService
@Autowired
@Qualifier("harmonyService")
private EmailService emailService;
........
}
EmailService interface:
public interface EmailService {
void someMethod();
}
we have two implementation classes of Email Service
a) First Implementation
@Component("harmonyService")
public class EmailHarmonyServiceImpl implements EmailService {
void someMethod() {
//implementation
}
}
b)second implementation
@Component("notificationService")
public class EmailNotificationServiceImpl implements EmailService {
void someMethod() {
//implementation
}
}
junit test:
@ExtendWith(SpringExtension::class)
@ActiveProfiles("test,jsonlogs")
@WebMvcTest(value = [ProfileController::class])
class ProfileApiApplicationTests {
@Autowired
private lateinit
var emailService: EmailService
//some more code
}
Error while running the test:
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'profileController': Unsatisfied dependency expressed through field 'emailService';
nested exception is org.springframework.beans.factory.NoSuchBeanDeFinitionException: No qualifying bean of type 'com.loyaltyone.account.profileapi.services.EmailService'
available: expected at least 1 bean which qualifies as autowire candidate.Dependency annotations: {
@org.springframework.beans.factory.annotation.Autowired(required = true),@org.springframework.beans.factory.annotation.Qualifier(value = harmonyService)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。