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

网站建设与维护的认识网页优化与网站优

网站建设与维护的认识,网页优化与网站优,wordpress中文企业网站,网站站内交换链接怎么做Java 新手入门#xff1a;Java单元测试利器#xff0c;Mock详解_java mock-CSDN博客 这个是典型的before when assert三段式#xff0c;学一下单测思路 这个没有动态代理#xff0c;所以是直接class(对比下面) Jmockit使用笔记_增加代码覆盖率_覆盖try catch_使用new Mock…Java 新手入门Java单元测试利器Mock详解_java mock-CSDN博客 这个是典型的before when assert三段式学一下单测思路 这个没有动态代理所以是直接class(对比下面) Jmockit使用笔记_增加代码覆盖率_覆盖try catch_使用new MockUp私有方法-CSDN博客 new mock up: Jmockit使用MockUp控制被注入Service的方法_mockup使用教程-CSDN博客 默认方法的含义 在 JMockit 中当一个类的依赖如 链接的UserService被注入时如果没有为该依赖的某个方法设置具体的行为JMockit 会提供一个默认实现。这个默认实现通常是 对于 返回值类型 的方法 返回值类型是 int 或其他基本类型时返回其默认值如 0、false 等。返回值类型是对象时返回 null。对于 void 方法 不执行任何实际逻辑相当于一个空实现。 由于 userService 是被 JMockit 模拟的setUserId 方法的默认实现 不会修改 orderInfo 的 userId 属性。因此 orderInfo.getUserId() 始终为 null 模拟类里面的方法: 方式一:使用new Expectations() Test public void getOrderInfo1() {new Expectations() {{userService.setUserId((OrderInfo) any);result new DelegateOrderInfo() {void delegate(OrderInfo orderInfo) {orderInfo.setUserId(ZHANGSAN123); // 模拟方法逻辑}};}};OrderInfo result testService.getOrderInfo(123);// 验证结果Assert.assertEquals(ZHANGSAN123, result.getUserId()); } 这部分代码是 JMockit 的 Expectations 定义主要用来模拟依赖对象 userService 的行为。 userService.setUserId((OrderInfo) any) 声明当 userService 的 setUserId 方法被调用时不管传入的参数是什么(OrderInfo) any都会执行后续的行为。 result new DelegateOrderInfo() 为被调用的方法定义了一个代理逻辑即模拟实现。这里 Delegate 是 JMockit 提供的功能用来自定义方法的执行逻辑。 代理逻辑void delegate(OrderInfo orderInfo) 传入的 orderInfo 对象是调用 setUserId 方法时的参数。在代理逻辑中直接对 orderInfo 的 userId 属性赋值为 ZHANGSAN123。 解读: userService.setUserId((OrderInfo) any) 定义了 userService 的 setUserId 方法在接收到任何 OrderInfo 对象作为参数时会执行以下逻辑。 result new DelegateOrderInfo() { ... }通过 Delegate 为方法提供了具体的代理逻辑 当 setUserId 被调用时不会执行真实的实现而是执行代理逻辑直接将 orderInfo.userId 设置为 ZHANGSAN123。 Expectations 如何影响依赖对象 示例 OrderInfo result testService.getOrderInfo(123); 依赖方法调用 testService.getOrderInfo 会调用 userService.setUserId(orderInfo)。 方法替换 因为用 Expectations 模拟了 setUserId 方法实际调用的不是 UserService 的真实方法而是 Expectations 中定义的代理逻辑。 逻辑执行 在代理逻辑中将 orderInfo.userId 设置为 ZHANGSAN123。 结果返回 通过修改后的 OrderInfo 对象返回给调用方。 基本原理Expectations 是 JMockit 提供的一种基于 声明式 的方式用于定义某个依赖对象的方法行为。 通过在测试代码中定义具体的行为测试框架根据定义的规则动态返回结果或执行逻辑。对特定实例生效不影响该类的其他实例。 方式2:使用new mockup()推荐更easy new MockUpUserService(userService.getClass()) {Mockpublic void setUserId(OrderInfo orderInfo) {orderInfo.setUserId(zhangsan123);} };基本原理MockUp 是 JMockit 提供的一种方式用于在运行时修改类的方法实现。 可以直接为某个类的具体方法编写新的实现类似于 重写方法。使用 Mock 注解标记需要模拟的方法。 注意: /*** author xinruoxiangyang9010* 这里的参数必须是:userService.getClass()* 如果写成UserService.class则Mock里面的方法不生效*/ new MockUpUserService(userService.getClass()) 1. UserService.class 表示类级别的代理 当你使用 new MockUpUserService() 或 new MockUpUserService(UserService.class) 时JMockit 会针对 UserService 类本身 进行代理。 它的效果是全局生效影响所有实例。但是如果在运行时你注入的是 userService 的一个动态代理对象比如 Spring 的动态代理机制生成的对象代理逻辑不会直接生效。 2. userService.getClass() 表示对象所属的动态类型userService.getClass() 返回的是 userService 实际运行时的类型。 如果 userService 是被 Spring 动态代理如 CGLIB 或 JDK 动态代理生成的对象那么 userService.getClass() 返回的就是这个动态代理类。MockUp 会针对这个动态代理类生效从而让 Mock 标注的方法在调用时起作用。 在实际项目中特别是使用 Spring 框架时Autowired 注入的 userService 很可能是一个动态代理对象而不是直接的 UserService 实例。  假设 userService 是通过 Spring 注入的动态代理对象  System.out.println(userService.getClass()); // 输出类似 com.example.UserService$$EnhancerBySpringCGLIB$$12345
http://www.hkea.cn/news/14523403/

相关文章:

  • 浙江网站建设设计网站备案掉了怎么办
  • 网站建设案例方案中山网站建设文化市场
  • 资料库网站开发报价网站流量对排名的影响
  • wordpress建站论坛企业开发网站公司
  • 崇州企业网站建设中国企业商铺网
  • 做网站可以赚钱吗知乎seo点评类网站
  • 长春个人做网站哪家好网站建设的设计思路
  • 自建站价格网站友链查询
  • 网站名称能用商标做名称吗信息流广告代运营
  • 莱特币做空国外网站网站栏目模块
  • 哪个网站做投票链接模板好看商城app下载安装
  • 武夷山网站制作什么网站专做外贸
  • 注册功能网站建设惠州做棋牌网站建设有哪些公司
  • 网站seo诊断报告例子网店推广计划书
  • 无锡教育论坛网站建设成都企业网站商城定制
  • 设计参考网站推荐诚信网站平台建设方案
  • 外包做一个网站一般费用微信登录wordpress
  • 做网站还 淘宝python生成网页
  • 国外优秀的字体设计网站wordpress主题自定义
  • 江门自助建站模板大连发现2例阳性
  • 建筑网站的研究背景与意义论坛网站备案流程图
  • 中文网站怎么做英文版深圳市建筑工程交易服务
  • 大连网站建设方法icp对网站内容
  • 一个人可以完成网站建设吗微信推广小程序
  • 做行业网站赚钱吗公司两个网站可以做友情链接吗
  • 如何自己制作一个网站可以制作试卷的app
  • 如何实现输入域名访问网站首页wordpress 免费中文企业主题下载
  • 广州网站制作(信科网络)深圳建站模板
  • 关于建设网站的合作合同范本销售新品牌如何推广
  • 微官网和公众号的区别深圳优化网站排名