如何解决使用Spring,MongoDB和Kotlin进行JUnit依赖注入
我是一名Java开发人员,他通过编写REST API投入到Spring和Spring WebFlux中。我通常会进行TDD,并且尝试编写一些JUnit测试用例来测试MongoDB查询时,我遇到了一些问题。
示例存储库:
@Repository
interface XReactiveRepository: ReactiveMongoRepository<X,String>
Java等效项:
@Repository
public interface XReactiveRepository extends ReactiveMongoRepository<X,String> { }
在Java中,我可以使用@Autowired将此依赖项注入到单元测试中,如下所示:
@Autowired
private XReactiveRepository repository
但是我不能直接在Kotlin中做到
@Autowired
private repository: XReactiveRepository
这将导致编译问题,指出必须对其进行初始化或声明为抽象。我已经尝试过通过构造函数进行依赖注入,但这也不起作用。任何Kotlin / Spring开发人员都知道如何正确地将存储库注入到junit5测试中?
解决方法
编译问题意味着您的@Autowired
字段应为lateinit var
。
但是,Spring建议在字段注入中使用构造函数注入。
如果您使用@Autowired
,即,
class YourTestClass(@Autowired private val repository: XReactiveRepository)
默认情况下,除非使用@TestConstructor
批注或将spring.test.constructor.autowire.mode
系统属性更改为all
,否则Spring不会自动装配测试类的构造函数。
您可以从Spring Framework Reference中找到全部内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。