微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot:无法对依赖@Qualifier注释的服务的控制器进行junit测试

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?