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

优秀网站 要素云南做网站公司

优秀网站 要素,云南做网站公司,好的学习网站打广告,广州地域推广我大部分时间都在使用EasyMock #xff0c;但是最近我和一些非常愿意使用Mockito的人一起工作。 我不打算在同一项目中使用两个框架来实现相同的目的#xff0c;因此我采用了Mockito 。 因此#xff0c;在过去的几个月中#xff0c;我一直在使用Mockito #xff0c;这是我… 我大部分时间都在使用EasyMock 但是最近我和一些非常愿意使用Mockito的人一起工作。 我不打算在同一项目中使用两个框架来实现相同的目的因此我采用了Mockito 。 因此在过去的几个月中我一直在使用Mockito 这是我对两者的比较分析。 与我一起工作的人列举了使用Mockitio的测试可读性的原因但是我对此有不同的看法。 假设我们要测试以下代码 public class MyApp {MyService service;OtherService otherService;void operationOne() {service.operationOne();}void operationTwo(String args) {String operationTwo otherService.operationTwo(args);otherService.operationThree(operationTwo);}void operationThree() {service.operationOne();otherService.operationThree(success);} }class MyService {void operationOne() {} }class OtherService {public String operationTwo(String args) {return args;}public void operationThree(String operationTwo) {} } 现在让我使用EasyMock和Mockito为此类编写一个简单的测试用例。 public class MyAppEasyMockTest {MyApp app;MyService service;OtherService otherService;Beforepublic void initialize() {service EasyMock.createMock(MyService.class);otherService EasyMock.createMock(OtherService.class);app new MyApp();app.service service;app.otherService otherService;}Testpublic void verifySimpleCall() {service.operationOne();EasyMock.replay(service);app.operationOne();EasyMock.verify(service);}} public class MyAppMockitoTest {MyApp app;MyService service;OtherService otherService;Beforepublic void initialize() {service Mockito.mock(MyService.class);otherService Mockito.mock(OtherService.class);app new MyApp();app.service service;app.otherService otherService;}Testpublic void verifySimpleCall() {app.operationOne();Mockito.verify(service).operationOne();}} 这是一个非常简单的测试我必须说Mockito更具可读性。 但是根据经典的测试方法Mockito测试并不完整。 我们已经验证了我们正在寻找的电话但是如果明天我通过添加一个服务电话来更改源代码则测试不会中断。 void operationOne() {service.operationOne();service.someOtherOp();} 现在这使我感到测试不够好。 但值得庆幸的是Mockito提供了verifyNoMoreInteractions 可用来完成测试。 现在让我为MyApp类编写一些测试。 public class MyAppEasyMockTest {Testpublic void verifyMultipleCalls() {String args one;EasyMock.expect(otherService.operationTwo(args)).andReturn(args);otherService.operationThree(args);EasyMock.replay(otherService);app.operationTwo(args);EasyMock.verify(otherService);}Test(expected RuntimeException.class)public void verifyException() {service.operationOne();EasyMock.expectLastCall().andThrow(new RuntimeException());EasyMock.replay(service);app.operationOne();}Testpublic void captureArguments() {CaptureString captured new CaptureString();service.operationOne();otherService.operationThree(EasyMock.capture(captured));EasyMock.replay(service, otherService);app.operationThree();EasyMock.verify(service, otherService);assertTrue(captured.getValue().contains(success));}}public class MyAppMockitoTest {Testpublic void verifyMultipleCalls() {String args one;Mockito.when(otherService.operationTwo(args)).thenReturn(args);app.operationTwo(args);Mockito.verify(otherService).operationTwo(args);Mockito.verify(otherService).operationThree(args);Mockito.verifyNoMoreInteractions(otherService);Mockito.verifyZeroInteractions(service);}Test(expected RuntimeException.class)public void verifyException() {Mockito.doThrow(new RuntimeException()).when(service).operationOne();app.operationOne();}Testpublic void captureArguments() {app.operationThree();ArgumentCaptor capturedArgs ArgumentCaptor.forClass(String.class);Mockito.verify(service).operationOne();Mockito.verify(otherService).operationThree(capturedArgs.capture());assertTrue(capturedArgs.getValue().contains(success));Mockito.verifyNoMoreInteractions(service, otherService);} } 这些是一些实际的测试场景我们想要声明参数异常等。如果我查看并比较使用EasyMock编写的测试和使用Mockito进行的测试我倾向于觉得这两个测试在可读性上都是相同的但它们都没有一个更好的任务。 EasyMock中大量的期望和返回调用使测试不可读并且Mockito的verify语句通常会影响测试的可读性。 根据Mockito的书verifyZeroInteractionsverifyNoMoreInteractions不应在您编写的每个测试中使用但是如果我将它们排除在测试范围之外则我的测试还不够好。 此外在测试中所有事情都应在开发人员的控制之下即交互如何发生以及交互如何发生。 在EasyMock中这方面更明显因为开发人员必须在他的代码中放下所有这些交互但是在Mockito中框架负责所有交互而开发人员只关心它们的验证如果有。 但是这可能会导致测试场景其中开发人员不受所有交互的控制。 Mockito具有像JunitRunner这样的好东西可用于创建具有所有必需依赖项的Mocks。 这是删除一些基础结构代码的好方法并且EasyMock也应该有一个。 RunWith(MockitoJUnitRunner.class) public class MyAppMockitoTest {MyApp app;MockMyService service;MockOtherService otherService;Beforepublic void initialize() {app new MyApp();app.service service;app.otherService otherService;} } 结论 由于我已经使用了这两个框架因此我认为除了简单的测试用例之外EasyMock和Mockito都导致可读性相同的测试用例。 但是EasyMock对于单元测试更好因为它迫使开发人员控制事物。 由于其假设和考虑Mockito将这种控制隐藏在地毯下因此不是一个好选择。 但是Mockito提供了某些非常有用的功能例如junitRunner调用链接而EasyMock的下一个版本中应该有一个。 参考 到目前为止 我们的JCG合作伙伴 Rahul Sharma 使用EasyMock或Mockito在The road…博客博客中。 翻译自: https://www.javacodegeeks.com/2012/08/using-easymock-or-mockito.html
http://www.pierceye.com/news/748258/

相关文章:

  • 动漫网站设计方案网站服务器解决方案
  • 网站建设平台汉龙网站建设的学习方法
  • 内蒙古集宁建设厅官方网站服务器的作用和用途
  • 网站备案主体自适应网站 seo怎么做
  • 个人网站开发制作教程wordpress会员设置
  • 门户网站建设为企业带来的好处扬州网官方微博
  • 建设网站需要多大域名空间公司网站开发费用计入
  • 企业网站建设优化江门站官网
  • 网站开发的私活襄阳门户网站建设
  • 网站打不开第二天不收录啦如何制作个人网页缴费
  • 网页设计制作网站html代码怎么做网站的后台维护
  • 做体力活的网站如何推广个人网站
  • 网站建设指导ui培训完找工作没人要
  • 中国公司网站建设方案郑州网站制作汉狮
  • 网站制作com cn域名有什么区别黄志达设计公司官网
  • 网站整站优化方案wap注册
  • 建设主管部门官方网站html5旅游网站
  • 网站建设及维护流程深圳市手机网站建设品牌
  • 凡科做的网站被举报了会怎么样网络招商平台网站怎么做
  • 山东网站建设公司哪家权威嘉兴中小企业网站制作
  • 做网站的搜索引擎从代码角度分析网站怎么做
  • jsp小型网站开发南宁百度seo排名优化
  • 上海最专业的网站建设公司排名为什么上传网站模板网站上没有文字和图片
  • 网站建设灬金手指下拉十四自己做的网站与ie不兼容
  • 专业制作网站价格wordpress 安装语言包
  • 企业网站建设运营的灵魂是什么网站建设服务协议 百度
  • 注册了域名之后怎么做网站苏州市住房建设局网站
  • 免费做问卷的网站好新媒体培训
  • 网站建设 版权归属重庆建设监理协会网站
  • 游戏网站域名相城区网站建设