我有一个Spring Boot应用程序和服务,里面有私有的道场。私有DAO属性使用@autowired
进行注释(没有设置器或构造器设置它,只有注释)。我试图为服务编写Spock测试,但找不到如何将模拟DAO注入@autowired
变量。
class TestService extends Specification {
DAO dao = Mock(DAO)
Service service = new Service()
def "test save"() {
when:
service.save('data')
then:
1 * dao.save('data')
}
}
结果我这样做了:
class TestService extends Specification {
DAO dao = Mock(DAO)
Service service = new Service()
void setup() {
service.dao = dao
}
def "test save"() {
when:
service.save('data')
then:
1 * dao.save('data')
}
}
其中一点是使用反射。但是Groovy可以直接设置私有字段,而不需要额外的操作。对我来说是新闻。
我有一个类,我正在为我的服务注入一个代理。
所以我想做一些事情 但我得到了空异常
我正在尝试运行UI测试。当我不嘲笑任何注入的依赖时,一切都运行得很好。当我将模块的@provides return切换到mocked对象时,我会得到以下消息: 已开始运行测试 测试仪器过程崩溃。 下面是一些测试代码: 什么都不能打印出来。 但如果我把模拟的共享数据转换成真实的数据 嘲弄一些其他模块也会带来相同的结果,而嘲弄其他模块工作良好。 有什么想法吗?
问题内容: 每当我想测试使用资源注入的类时,我最终都会包含一个仅在测试中使用的构造函数: 还有另一种模拟资源注入的方式,或者这是遵循的正确模式吗? 问题答案: 您可以使用简单的光泽效果,它可以模拟EJB注入系统。 另一种方法是在测试中使用反射来设置字段,我有时使用类似这样的内容:
我有一个@InjectMocks对象,在我的测试类中使用@InjectMocks时,我需要模拟它抛出的NPE 下面是我的班级结构 你能建议如何模仿这个MyService对象吗。我已经使用了@Mock和@Injected Mock,但在获得NPE时不起作用。我尝试注入基类和父类,但没有成功。
我想在应用程序运行时找到我的对象大小。我想用千分尺在Grafana中显示我的对象大小。 我的对象像人、学生、...... 我该怎么办? 对象大小像文件大小、对象体积