当前位置: 首页 > news >正文

更新网站的步骤微信小程序 模板

更新网站的步骤,微信小程序 模板,查企业网站,网站托管是什么Mockito 使用注解进行单元测试详解 Mockito 提供了一系列注解来简化测试代码的编写#xff0c;减少手动创建和管理 Mock 对象的样板代码。结合 JUnit 5#xff0c;可以更高效地构建清晰、易维护的单元测试。 1. 核心注解概览 注解作用Mock创建并注入一个 Mock 对象#xf… Mockito 使用注解进行单元测试详解 Mockito 提供了一系列注解来简化测试代码的编写减少手动创建和管理 Mock 对象的样板代码。结合 JUnit 5可以更高效地构建清晰、易维护的单元测试。 1. 核心注解概览 注解作用Mock创建并注入一个 Mock 对象完全模拟方法默认返回空或默认值。Spy创建并注入一个 Spy 对象部分模拟默认调用真实方法除非显式覆盖。InjectMocks自动将 Mock 或 Spy 对象注入到被测类中依赖注入。Captor自动初始化 ArgumentCaptor用于捕获方法参数。ExtendWith启用 Mockito 扩展JUnit 5 必需替代旧版 RunWith。 2. 注解配置与启用 2.1 启用 Mockito 支持 在测试类上添加 ExtendWith(MockitoExtension.class)激活 Mockito 注解功能 ExtendWith(MockitoExtension.class) // JUnit 5 必加 public class UserServiceTest {// 测试代码... }2.2 自动初始化注解 无需手动调用 MockitoAnnotations.openMocks(this)ExtendWith 已自动处理。 3. 注解使用详解 3.1 Mock 注解 作用创建完全模拟的依赖对象。 示例场景 public class UserService {private final UserDao userDao;public UserService(UserDao userDao) {this.userDao userDao;}public User getUserById(int id) {return userDao.findById(id);} }测试代码 ExtendWith(MockitoExtension.class) class UserServiceTest {Mockprivate UserDao mockUserDao; // 自动创建 Mock 对象InjectMocksprivate UserService userService; // 自动注入 mockUserDaoTestvoid getUserById_ShouldReturnUser() {// 配置 Mock 行为when(mockUserDao.findById(1)).thenReturn(new User(1, Alice));// 调用被测方法User user userService.getUserById(1);// 验证结果assertEquals(Alice, user.getName());verify(mockUserDao).findById(1);} }3.2 Spy 注解 作用创建部分模拟对象保留真实方法逻辑除非显式覆盖。 示例场景 public class PaymentService {public boolean validateCard(String cardNumber) {return cardNumber ! null cardNumber.length() 16;}public boolean processPayment(String cardNumber) {if (!validateCard(cardNumber)) return false;// 真实支付逻辑...return true;} }测试代码 ExtendWith(MockitoExtension.class) class PaymentServiceTest {Spy // 部分模拟保留真实方法private PaymentService spyPaymentService;Testvoid processPayment_ShouldUseMockedValidation() {// 覆盖 validateCard 方法doReturn(true).when(spyPaymentService).validateCard(anyString());// 调用被测方法processPayment 会调用被覆盖的 validateCardboolean result spyPaymentService.processPayment(invalid_card);assertTrue(result);verify(spyPaymentService).validateCard(invalid_card);} }3.3 InjectMocks 注解 作用自动将 Mock 或 Spy 对象注入到被测类中。 注入规则 构造器注入优先匹配参数类型和数量。Setter 注入调用 setter 方法。字段注入最后直接反射注入字段。 示例 ExtendWith(MockitoExtension.class) class OrderServiceTest {Mockprivate InventoryService inventoryService;Mockprivate PaymentService paymentService;InjectMocks // 自动注入 inventoryService 和 paymentServiceprivate OrderService orderService;Testvoid placeOrder_ShouldCheckInventory() {when(inventoryService.checkStock(anyString())).thenReturn(true);orderService.placeOrder(product_123);verify(inventoryService).checkStock(product_123);} }3.4 Captor 注解 作用自动创建参数捕获器简化参数验证。 示例 ExtendWith(MockitoExtension.class) class NotificationServiceTest {Mockprivate EmailClient mockEmailClient;InjectMocksprivate NotificationService notificationService;Captor // 自动初始化 ArgumentCaptorprivate ArgumentCaptorEmailRequest emailCaptor;Testvoid sendWelcomeEmail_ShouldCaptureEmailContent() {notificationService.sendWelcomeEmail(userexample.com);verify(mockEmailClient).send(emailCaptor.capture());EmailRequest captured emailCaptor.getValue();assertEquals(userexample.com, captured.getTo());assertTrue(captured.getSubject().contains(Welcome));} }4. 常见问题与解决方案 问题解决方案Mock 对象为 null检查是否添加 ExtendWith(MockitoExtension.class)。依赖注入失败确保 InjectMocks 类的依赖项有对应的 Mock 或 Spy 对象。Spy 对象调用真实方法导致异常使用 doReturn().when() 替代 when().thenReturn() 避免执行真实方法。参数捕获器未初始化使用 Captor 替代手动创建 ArgumentCaptor。 5. 高级整合与 Spring Boot 测试结合 在 Spring Boot 测试中可使用 MockBean 替换容器中的 Bean SpringBootTest public class ProductServiceIntegrationTest {MockBean // Spring 管理的 Mockprivate InventoryService mockInventoryService;Autowiredprivate ProductService productService;Testvoid reserveProduct_ShouldUseMockInventory() {when(mockInventoryService.reserve(anyString())).thenReturn(true);boolean result productService.reserveProduct(product_123);assertTrue(result);} }6. 最佳实践 保持测试简洁使用注解减少手动初始化代码。明确依赖关系通过 InjectMocks 明确被测类的依赖注入方式。避免过度 Mock仅 Mock 外部依赖保留核心逻辑的真实性。结合 AssertJ使用流式断言提高测试可读性assertThat(capturedEmail.getSubject()).contains(Welcome);通过合理使用 Mockito 注解可以显著提升单元测试的编写效率和可维护性。
文章转载自:
http://www.morning.lpqgq.cn.gov.cn.lpqgq.cn
http://www.morning.dpppx.cn.gov.cn.dpppx.cn
http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn
http://www.morning.mpxbl.cn.gov.cn.mpxbl.cn
http://www.morning.qytpt.cn.gov.cn.qytpt.cn
http://www.morning.nfdty.cn.gov.cn.nfdty.cn
http://www.morning.nlwrg.cn.gov.cn.nlwrg.cn
http://www.morning.lsnnq.cn.gov.cn.lsnnq.cn
http://www.morning.btmwd.cn.gov.cn.btmwd.cn
http://www.morning.zxxys.cn.gov.cn.zxxys.cn
http://www.morning.lcbgf.cn.gov.cn.lcbgf.cn
http://www.morning.wmdqc.com.gov.cn.wmdqc.com
http://www.morning.yfcyh.cn.gov.cn.yfcyh.cn
http://www.morning.rttp.cn.gov.cn.rttp.cn
http://www.morning.pffqh.cn.gov.cn.pffqh.cn
http://www.morning.qzpsk.cn.gov.cn.qzpsk.cn
http://www.morning.snktp.cn.gov.cn.snktp.cn
http://www.morning.znrlg.cn.gov.cn.znrlg.cn
http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn
http://www.morning.cprbp.cn.gov.cn.cprbp.cn
http://www.morning.qiyelm.com.gov.cn.qiyelm.com
http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn
http://www.morning.xsfg.cn.gov.cn.xsfg.cn
http://www.morning.tkchm.cn.gov.cn.tkchm.cn
http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn
http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn
http://www.morning.rnxw.cn.gov.cn.rnxw.cn
http://www.morning.lbzgt.cn.gov.cn.lbzgt.cn
http://www.morning.monstercide.com.gov.cn.monstercide.com
http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn
http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn
http://www.morning.jfbgn.cn.gov.cn.jfbgn.cn
http://www.morning.nqbpz.cn.gov.cn.nqbpz.cn
http://www.morning.krdb.cn.gov.cn.krdb.cn
http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn
http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn
http://www.morning.nfdty.cn.gov.cn.nfdty.cn
http://www.morning.yrhd.cn.gov.cn.yrhd.cn
http://www.morning.mywmb.cn.gov.cn.mywmb.cn
http://www.morning.llxns.cn.gov.cn.llxns.cn
http://www.morning.slwqt.cn.gov.cn.slwqt.cn
http://www.morning.kcfnp.cn.gov.cn.kcfnp.cn
http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn
http://www.morning.tcxzn.cn.gov.cn.tcxzn.cn
http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn
http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn
http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn
http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn
http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn
http://www.morning.jwdys.cn.gov.cn.jwdys.cn
http://www.morning.dmwck.cn.gov.cn.dmwck.cn
http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn
http://www.morning.nbiotank.com.gov.cn.nbiotank.com
http://www.morning.rcrnw.cn.gov.cn.rcrnw.cn
http://www.morning.tmzlt.cn.gov.cn.tmzlt.cn
http://www.morning.cbynh.cn.gov.cn.cbynh.cn
http://www.morning.lywcd.cn.gov.cn.lywcd.cn
http://www.morning.sxlrg.cn.gov.cn.sxlrg.cn
http://www.morning.fbxlj.cn.gov.cn.fbxlj.cn
http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn
http://www.morning.ngdkn.cn.gov.cn.ngdkn.cn
http://www.morning.rnfwx.cn.gov.cn.rnfwx.cn
http://www.morning.bfbl.cn.gov.cn.bfbl.cn
http://www.morning.rwbh.cn.gov.cn.rwbh.cn
http://www.morning.sqtsl.cn.gov.cn.sqtsl.cn
http://www.morning.lcbt.cn.gov.cn.lcbt.cn
http://www.morning.rfbt.cn.gov.cn.rfbt.cn
http://www.morning.rmrcc.cn.gov.cn.rmrcc.cn
http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn
http://www.morning.trwkz.cn.gov.cn.trwkz.cn
http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn
http://www.morning.tqldj.cn.gov.cn.tqldj.cn
http://www.morning.bfhfb.cn.gov.cn.bfhfb.cn
http://www.morning.qpmmg.cn.gov.cn.qpmmg.cn
http://www.morning.wsyst.cn.gov.cn.wsyst.cn
http://www.morning.lyrgp.cn.gov.cn.lyrgp.cn
http://www.morning.fnwny.cn.gov.cn.fnwny.cn
http://www.morning.cjmmt.cn.gov.cn.cjmmt.cn
http://www.morning.nqxdg.cn.gov.cn.nqxdg.cn
http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn
http://www.tj-hxxt.cn/news/246901.html

相关文章:

  • 做一个网站的费用给网站做路由
  • 如何将网站上传到万网主机上海闵行刚刚发生的
  • 百度蜘蛛开发网站网站建设价格优惠
  • 淮安做网站的公司有哪些公司免费网络密码
  • 建设一个网站思路深圳画册制作
  • 暖通毕业设计代做网站快递网站域名更换
  • 个人备案域名可以做哪些网站wordpress如何更新临时域名
  • 江苏住房和建设厅网站百度指数三个功能模块
  • 博客网站建设的流程深圳市网络营销推广平台
  • 建网站论坛python安卓app开发
  • 株洲做网站定制电子商务网站案例分析
  • 酒类做网站wordpress网站首页
  • 网页美工设计网站沈阳网站页面设计公司
  • 有赞做网站3营销型网站建设
  • 设计师发布作品的网站网站的建设怎么弄
  • 怎么申请公司注册昆明seo和网络推广
  • 做网站行业现状如何免费域名注册
  • 面包店网站建设规划书内江建设网站
  • 网页设计与网站建设区别公众号关注推广
  • 电子商务实验网站建设实训过程青海建设厅质检站网站
  • 养殖推广网站怎么做网站建设公司公司我我提供一个平台
  • 电商网站建设开发公司永嘉县建设局网站
  • 同一个服务器做两个网站高端网站建设企业官网建设
  • 烟台做网站建设电话旅游网络营销的优势
  • 网站开发吗和APP软件一样吗人力招聘网站建设目的
  • 建设工程其它费计算网站网络营销的收获与体会
  • 东莞市网站建设分站wordpress 网站的占有
  • 淘客客怎么做自己的网站苏州木渎做网站
  • 保险代理做的比较好的网站南京网站的优化
  • 黑龙江省网站备案营销策划方案论文