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

网站语言切换前端可以做么/广州头条今日头条新闻

网站语言切换前端可以做么,广州头条今日头条新闻,wordpress blog theme,公司网站需要程序员做吗鸡尾酒 Mockito是Java的单元测试Mock框架。它的logo是一杯古巴最著名的鸡尾酒Mojito,Mojito鸡尾酒,源自古巴的哈瓦那,带有浓厚的加勒比海风情。并不浓烈,但是喝一杯下去,脸上会泛起红晕,象少女的…

鸡尾酒

Mockito是Java的单元测试Mock框架。它的logo是一杯古巴最著名的鸡尾酒Mojito,Mojito鸡尾酒,源自古巴的哈瓦那,带有浓厚的加勒比海风情。并不浓烈,但是喝一杯下去,脸上会泛起红晕,象少女的羞涩。味道很清新,有一点青涩、有点甜蜜。

logo_副本

Stub & Mock

Stub和Mock是Test Double类型中的2种。Test Double一共有5种类型,Dummy,Stub,Spy,Mock,Fake。

img

Test Double是测试复制品,用来统称模拟真实对象的假对象。因使用场景有略微不同,而有这5种类型。

  • Dummy,通常只用来填充参数列表。有可能是null对象引用,或Object类实例等。
  • Fake,是简化版的实现,比如基于内存实现的数据库,不会真的去做数据库操作,用简单的HashMap来存放数据。
  • Stub,Stub用来替代SUT(System Under Test)依赖的组件,但是只模拟一个外部依赖,不做断言。
  • Spy,介于Stub和Mock之间。如果真实对象没有被打桩,当调用Spy对象时,真实对象也会被调用。
  • Mock,可以理解为Stub+Verification,既模拟外部依赖,也会定义预期结果。

看一个实例,发送邮件,

public interface MailService {public void send(Message msg);
}

先写个Stub,

public class MailServiceStub implements MailService {private List<Message> messages = new ArrayList<Message>();public void send(Message msg) {messages.add(msg);}public int numberSent() {return messages.size();}
}

实现Stub的状态验证,

class OrderStateTester...

public void testOrderSendsMailIfUnfilled() {Order order = new Order(TALISKER, 51);MailServiceStub mailer = new MailServiceStub();order.setMailer(mailer);order.fill(warehouse);assertEquals(1, mailer.numberSent());
}

只做了简单的测试,断言发出了1封邮件。没有测试是否发送给了对的收件人,或者邮件正文是否正确。不过不影响跟Mock比较。

如果用Mock,会怎么写呢?

class OrderInteractionTester...

public void testOrderSendsMailIfUnfilled() {Order order = new Order(TALISKER, 51);Mock warehouse = mock(Warehouse.class);Mock mailer = mock(MailService.class);order.setMailer((MailService) mailer.proxy());mailer.expects(once()).method("send");warehouse.expects(once()).method("hasInventory").withAnyArguments().will(returnValue(false));order.fill((Warehouse) warehouse.proxy());
}

结合一张图,就一下全明白了,

2020-08-21_172121_副本

怎么喝Mockito?

添加Maven dependency,

<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>3.3.3</version><scope>test</scope>
</dependency>

现在可以开始Mock了,先Mock一个List Interface试试,(示例只是玩语法,实际应使用instance)

//Let's import Mockito statically so that the code looks clearer
import static org.mockito.Mockito.*;// mock creation
List mockedList = mock(List.class);// using mock object
mockedList.add("one");
mockedList.clear();// verification
verify(mockedList).add("one");
verify(mockedList).clear();

接着用Mockito来做Stub:

// You can mock concrete classes, not just interfaces
LinkedList mockedList = mock(LinkedList.class);// stubbing
when(mockedList.get(0)).thenReturn("first");
when(mockedList.get(1)).thenThrow(new RuntimeException());// following prints "first"
System.out.println(mockedList.get(0));// following throws runtime exception
System.out.println(mockedList.get(1));// following prints "null" because get(999) was not stubbed
System.out.println(mockedList.get(999));// Although it is possible to verify a stubbed invocation, usually it's just redundant
// If your code cares what get(0) returns, then something else breaks 
// (often even before verify() gets executed).
// If your code doesn't care what get(0) returns, then it should not be stubbed.
verify(mockedList).get(0);

mock默认会返回null,或原始值,或空集合。如int/Integer返回0,boolean/Boolean返回false。

小结

本文首先介绍了Mockito是Java的单元测试Mock框架,然后比较了单元测试中Stub和Mock的区别,最后演示了Mockito如何使用。

参考资料:https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html

https://martinfowler.com/articles/mocksArentStubs.html

http://xunitpatterns.com/Test Double.html

http://www.lbrq.cn/news/1103563.html

相关文章:

  • 漳州专业做网站/公司网站建设平台
  • 个人做排行网站/关键词挖掘长尾词工具
  • 无锡b2b网站建设/如何快速收录一个网站的信息
  • 凡科建的网站怎么做seo/市场调研报告包括哪些内容
  • 网站空间备案/中国第一营销网
  • 微信怎样制作网站/seo技术服务外包公司
  • 厦门入夏网站建设公司/chatgpt 网址
  • 网站制作金华公司电话/线上推广的方式
  • 理财网站方案建设/北京排名seo
  • 英德市建设局网站/360优化大师官方下载手机
  • 帮熟人做网站如何收费/营销型网站建设策划书
  • 需要手机注册网站/友情链接英语
  • 网站设计要求 优帮云/人民日报今日新闻
  • 深圳 微网站建设ydgcm/软文推广文案
  • 光明新区做网站/百度竞价点击软件
  • 网页设计 做网站的代码/唐山建站公司模板
  • 外贸网站制作哪家快/优化内容
  • 网站建设服务中企动力/怎样创建网站或者网址
  • 日用品企业网站建设/百度网页链接
  • 网站建设费用的会计/东莞seo推广
  • 张家港网站开发制作/济南百度
  • 在线做六级阅读网站/启动互联全网营销推广
  • 潍坊做网站的网络公司/线上seo关键词优化软件工具
  • 昆明网站推广/谷歌浏览器app下载
  • 武汉网站建设可以吗/正规网络教育培训机构
  • 免费域名解析网站建设/seo主管招聘
  • 公司网站建设价位/最佳磁力吧cili8
  • 云南昆明网站建设/seo专业培训学费多少钱
  • wordpress 登录空白页/长沙网站seo推广
  • 权威的网站制作/百度网站登录
  • (苍穹外卖)暑假学习理解P2
  • Softhub软件下载站实战开发(十九):软件信息展示
  • Muduo库中单例模式详解
  • 低速信号设计之I3C篇
  • NISP-PTE基础实操——XSS
  • 【设计模式C#】外观模式(用于解决客户端对系统的许多类进行频繁沟通)