我想为控制器类编写测试。控制器类将服务对象作为构造函数参数。在服务类的构造函数中添加了@Inject
注释。
class AssociateService @Inject()(configuration: Configuation){...}
服务类的构造函数参数是一个自定义配置对象,也是为应用程序创建的。我也将@Inject
添加到config类的构造函数中。现在,我收到以下类型的错误消息:
没有绑定“ className”的实现。
在java.lang.Integer中找不到合适的构造函数。类必须具有用@Inject注释的一个(并且只有一个)构造函数或非私有的零参数构造函数。
配置类具有多个构造函数参数,它们是“基本”类型(Int,布尔值),而一个参数是自定义类类型(className)。 我应该如何进行这种绑定,还是足以注释其他内容? 以及为什么显示构造函数错误消息?
答案 0 :(得分:1)
据我所知,测试和guice有两种方法,并且需要权衡取舍:
Ps。当然,您可以定义可选的构造函数并使用字段注入,但这并不是很明确的解决方案。
您必须设计软件以维护可测试性。有时并非项目中的每一行代码都需要测试,有时并非每条代码都是可测试的,因此必须将其与需要测试的软件重要部分分开。如果您以单一责任原则设计软件,那么编写测试就容易得多了。