实习笔记10-Dao在开发和测试中的注解

本文介绍了如何在Spring测试中使用@Autowired进行自动装配,以及@Mock和@Spy用于模拟对象的方法。特别强调了在Dao测试中,虽然mock可以去除不稳定因素,但可能需要随着src函数改动而重写测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近在写测试的时候,想把Dao中的query方法mock掉。结果发现不行,只能用autowaired注解,然后建sql文件去插入数据。在此总结一下autowaired和mock、spy注解的用法。在测Dao时,最好还是构造sql用固定值具体数据,把不稳定因素mock掉就好。但其实这样有一个问题,如果后续src函数进行了修改,那么测试就需要重新写。包括但不限于传入传出参数的修改,函数功能的变动。

一、@Autowired

    可以标注在属性上、方法上和构造器上,来完成自动装配。默认是根据属性类型,spring自动将匹配到的属性值进行注入,然后就可以使用这个属性autoWiredBean对象的方法。可以标注在属性上、方法上和构造器上,如果标注在属性上,则在构造器中就不能使用这个属性(对象)的属性和方法。当标注的属性是接口时,其实注入的是这个接口的实现类, 如果这个接口有多个实现类,只使用@Autowired就会报错,因为它默认是根据类型找,然后就会找到多个实现类bean,所有就不知道要注入哪个。然后它就会根据属性名去找。所以如果有多个实现类可以配合@Qualifier(value=“类名”)来使用 (是根据名称来进行注入的)。

二、@Mock

    指定需要mock的类型类(接口或者实现类),生成 Mock 类,其中所有的方法都不是真实的方法,而且返回值都是NULL或者Empty。使用mock对象,访问对象方法不会执行具体逻辑。

    mock中使用doReturn…when打桩,不会执行具体逻辑
    mock中使用when…thenReturn打桩,不会执行具体逻辑

    可以mock静态方法和final方法。

三、@Spy

    spy机制可以监视一个真实对象,对其进行方法调用会执行真实逻辑;spy也可以打桩指定的方法。

    spy中使用doReturn…when打桩,不会执行具体逻辑
    spy中使用when…thenReturn打桩,会执行具体逻辑,只是mock了返回结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值