政务公开 加强门户网站建设企业网站建设变相收取等级保护费6

web/2025/10/7 10:57:52/文章来源:
政务公开 加强门户网站建设,企业网站建设变相收取等级保护费6,jinsom wordpress,百度地图推广mockito入门本文是我们名为“ 用Mockito测试 ”的学院课程的一部分。 在本课程中#xff0c;您将深入了解Mockito的魔力。 您将了解有关“模拟”#xff0c;“间谍”和“部分模拟”的信息#xff0c;以及它们相应的存根行为。 您还将看到使用测试双打和对象匹配器进行验证的… mockito入门 本文是我们名为“ 用Mockito测试 ”的学院课程的一部分。 在本课程中您将深入了解Mockito的魔力。 您将了解有关“模拟”“间谍”和“部分模拟”的信息以及它们相应的存根行为。 您还将看到使用测试双打和对象匹配器进行验证的过程。 最后讨论了使用Mockito的测试驱动开发TDD以了解该库如何适合TDD的概念。 在这里查看 目录 1.为什么要模拟 2. Mockito框架简介 2.1。 存根的快速示例 2.2。 快速验证示例 3.混合一个Mockito 4.将Mockito与JUnit一起使用 5. Mockito最佳做法 在本教程中我们将研究Mockito Mocking Framework并通过将其添加到类路径中来准备一个Eclipse项目来使用它。 1.为什么要模拟 我们编写的所有代码都有一个相互依赖的网络它可以调用其他几个类的方法而这些类又可以调用其他方法。 确实这就是面向对象编程的意图和力量。 通常在编写功能代码的同时我们还将以自动化单元测试的形式编写测试代码。 我们使用这些单元测试来验证代码的行为以确保其行为符合我们的预期。 当我们对代码进行单元测试时我们希望对其进行隔离测试并希望对其进行快速测试。 为了进行单元测试我们只关心在当前测试的类中验证自己的代码。 通常我们还希望非常定期地执行单元测试重构时以及在持续集成环境中工作时每小时可能要执行多次。 这是我们所有相互依存成为问题的时候。 我们可能最终在另一个类中执行代码该类中的错误导致导致单元测试失败。 想象一下我们用来从数据库中读取用户详细信息的类如果要运行单元测试时没有数据库会发生什么 想象一下一个调用多个远程Web服务的类如果它们出现故障或需要很长时间响应怎么办 我们的单元测试可能由于我们的依赖关系而失败而不是因为我们的代码行为出现问题。 这是不希望的。 除此之外强制执行想要确保代码正确处理的特定事件或错误条件可能非常困难。 如果我们要测试某个反序列化对象的类如何正确处理可能的ObjectStreamException怎么办 如果我们要测试协作者的所有边界返回值怎么办 确保将某些计算值正确传递给协作者该怎么办 如果可能的话复制我们的测试条件可能需要花费大量的代码和较长的时间。 如果使用模拟所有这些问题都会消失。 嘲笑就像是我们与之合作的类的替代品一样它们取代了他们的位置并按照我们告诉他们的行为去做。 嘲弄让我们假装我们真正的合作者在那里即使他们不在。 更重要的是可以对模拟程序进行编程以返回我们想要的任何值并确认将任何值传递给它们。 模拟程序立即执行不需要任何外部资源。 假人会返回我们告诉他们的东西抛出我们想让他们抛出的任何异常并将按需一遍又一遍地执行这些操作。 他们让我们仅测试我们自己代码的行为以确保我们的类能够正常工作而不管其协作者的行为如何。 有几种可用于Java的模拟框架每种都有各自的语法各自的优势各自的劣势。 在本教程中我们将使用Mockito框架它是最流行的可用模拟框架之一。 2. Mockito框架简介 Mockito是一个Mocking框架可以很容易地为要与您的被测类进行交互的类和接口创建模拟。 Mockito提供了一个非常简单的API用于创建模拟并分配其行为。 它使您可以非常快速地指定预期的行为并验证与模拟的交互。 Mockito本质上具有两个阶段其中一个或两个阶段都作为单元测试的一部分执行 存根 验证 存根是指定模拟行为的过程。 这就是我们告诉Mockito与模拟互动时想要发生的事情的方式。 存根使我们能够解决我们在第一部分中概述的一些问题–它使为测试创建所有可能的条件变得简单。 它让我们控制了模拟的响应包括强迫它们返回我们想要的任何值或者抛出我们想要的任何异常。 它使我们可以在不同条件下编写不同的行为。 存根使我们可以精确控制模拟将执行的操作。 验证是验证与我们的模拟互动的过程。 它使我们能够确定模拟的调用方式以及调用的次数。 它使我们可以查看模拟的参数以确保它们符合预期。 验证使我们能够解决第一节中提到的其他问题–它使我们确保将我们期望的值准确地传递给我们的合作者并且不会发生意外情况。 验证使我们能够准确确定模拟发生了什么。 通过将这两个简单的阶段联系在一起我们可以构建极其灵活且功能强大的单元测试使用非常简单的Mockito API编码复杂的模拟行为和复杂的模拟交互验证。 Mockito确实有一些限制包括 你不能嘲笑期末班 您不能模拟静态方法 您不能模拟最终方法 您不能模拟equals或hashCode 存根的快速示例 想象一下您正在编写一个调用物理温度传感器API的类。 您要调用double getDegreesC()方法并基于从传感器返回的值返回以下字符串之一“ Hot”“ Mild”“ Cold”。 至少可以说要使单元测试控制房间的环境温度以测试功能非常困难。 但是如果我们使用Mockito来创建替代传感器的模拟物该怎么办 现在我们可以在单元测试中编写如下代码 when(sensor.getDegreesC()).thenReturn(15.0); 这告诉Mockito当模拟传感器收到对getDegreesC()的调用时它应该然后返回值15.0。 快速验证示例 假设您有一个类进行一些计算并负责在观察者完成计算后通知观察者。 您想确保在执行方法的过程中一次调用了观察者的notify()方法。 您可以在观察器中设置一些布尔值然后从单元测试中进行检查但这意味着更改一些生产代码甚至您可能都不拥有这些代码。 Mockito怎么样如果观察者是模拟的呢 现在我们可以在单元测试中编写如下代码 verify(observer).notify(); 这告诉Mockito必须仅一次调用一次notify()方法否则单元测试应该失败。 3.混合一个Mockito 现在我们已经了解了一些有关框架的知识让我们在项目中使用它。 如果使用Maven则将Mockito添加到项目中就像添加以下依赖项一样简单 dependency groupIdorg.mockito/groupId artifactIdmockito-all/artifactIdversion1.9.5/versionscopetest/scope/dependency 如果您使用Gradle则只需添加以下内容 dependencies {testCompile org.mockito:mockito-all:1.9.5 } 要将旧版Mockito添加到Eclipse项目的类路径中请从Mockito下载页面中获取最新的jar 取名为 mockito-all-1.9.5.jar并将其下载到硬盘上。 右键单击您的eclipse项目然后选择“属性”然后在左窗格中选择“ Java Build Path”然后在右侧选择“ Libraries”。 在“库”选项卡上单击“添加外部Jar”按钮然后导航到您先前下载的模拟所有jar。 选择罐子它现在已添加到您的项目中并可供使用。 在撰写本文时Mockito的最新版本是1.9.5但是在将其添加到项目之前应检查更新。 4.将Mockito与JUnit一起使用 要将Mockito集成到您的JUnit测试类中可以使用提供的Test Runner MockitoJUnitRunner 。 只需使用以下注释您的测试课 RunWith(MockitoJUnitRunner.class) 这告诉Mockito在测试类中接受所有带注释的模拟并对其进行初始化以进行模拟。 然后您可以简单地使用Mock注释任何实例变量以将其用作模拟。 请注意您应该导入org.mockito.Mock而不是org.mockito.mockitoannotations.Mock 已弃用。 与所有示例一样我们将创建一个新的Test类并在其中使用Mockito模拟java.util.List import java.util.List; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner;RunWith(MockitoJUnitRunner.class) public class MyTest {Mockprivate ListString mockList;} Mock注释告诉Mockito模拟mockList将被视为模拟而RunWith(MockitoJUnitRunner.class)告诉Mockito遍历MyTest所有带有Mock注释的成员并将其初始化以进行模拟。 您不必将任何新实例分配给嘲笑列表这是由Mockito在后台完成的。 通过上面的简单代码mockList准备好用作模拟了。 尝试添加以下导入 import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.junit.Test; 然后是以下简单的测试用例 Testpublic void test() {String expected Hello, World!;when(mockList.get(0)).thenReturn(expected);String actual mockList.get(0);assertEquals(expected, actual);System.out.println(actual);} 在这里我们看到了我们的期望-我们有一个字符串Hello, World! 然后继续对模拟列表的List.get()方法进行存根 List.get()在请求列表的第一个元素时返回期望的String。 然后我们调用mockList.get(0)以获取测试的实际值并断言我们的实际值等于我们的预期值然后将其输出到控制台以进行良好测量。 我们根本没有创建真实列表也没有插入“ HelloWorld” 进入列表。 它只是一个模拟列表它具有或知道的唯一功能是输入为0的get方法。 尝试更改String actual mockList.get(0); 到String actual mockList.get(1); 并运行测试。 您将看到actual值现在为空。 原因是我们唯一保留的功能是使用输入0调用.get– Mockito不知道如何使用输入1进行操作因此它仅返回null。 实际上我们调用List的任何其他方法都将返回null而任何不返回任何值的方法将有效地充当no-op。 这是一个功能强大的控件在几行代码中我们创建了List的实现该实现恰好在每次调用它时都可以实现我们想要的功能。 5. Mockito最佳做法 Mockito通常鼓励在单元测试和设计中采用标准的最佳实践即 Mockito没有模拟静态方法的规定因为Mockito鼓励面向对象的设计和对过程代码的依赖注入。 Mockito没有提供模拟私有方法的规定因为公共方法应该是黑盒并且从测试私有方法的角度来看不存在。 Mockito打包并鼓励使用Hamcrest Matchers这将在后续教程中介绍。 Mockito鼓励遵守Demeter法则而不鼓励嘲笑链式方法。 您不应存根或验证在不同线程之间共享的模拟。 但是您可以调用共享模拟的方法。 您无法验证模拟的toString()方法原因是测试环境本身可能会调用它因此无法进行验证。 如果您的测试用例使用了“当时给定”表示法则可以使用org.mockito.BDDMockito的存根方法以便when(mock.method()).thenReturn(something)成为given(mock.method()).willReturn(something)因为它将以您的测试格式很好地阅读。 可以在不使用Mockito批注的情况下使用Mockito但是使用批注更加容易和整洁这就是我们在这些教程中将要做的。 如果您的测试要求您出于测试目的修改类的特定方法的行为则可以“监视”任何类包括被测类。 Mockito明确建议仅在偶尔使用间谍的情况下使用间谍例如在处理遗留代码的情况下。 这将在以后的教程中介绍。 如果对间谍方法的实际调用可能会产生错误条件或者由于某些其他原因而无法调用则Mockito建议使用do *系列方法进行存根。 这将在以后的教程中介绍。 Mockito将允许您使用参数匹配器代替实际参数但有一个限制如果一个参数使用匹配器则所有参数都必须使用匹配器。 参数匹配器将在以后的教程中介绍但应谨慎使用。 Mockito提供了verifyNoMoreInteractions()方法来验证特定的模拟没有更多的交互但建议仅在适当的情况下谨慎使用。 Mockito提供了Answer接口以允许使用回调进行存根但建议不要使用它并鼓励您使用thenReturn()和doThrow()方法进行简单的存根。 我们将在以后的教程中介绍答案。 如果使用ArgumentCaptor进行参数验证则应仅在验证阶段而不是存根阶段使用它。 ArgumentCaptor将在以后的教程中介绍。 Mockito建议非常小心地使用Partial Mocks主要是在处理遗留代码时。 设计良好的代码不应要求使用部分模拟。 Mockito提供了一个reset()方法用于在测试方法的中间重置模拟但是建议您不要使用它因为它是一种代码气味可能会使您的测试过长且过于复杂。 有更多的功能和做法但是这些是Mockito告诉您要注意的主要功能和做法。 我们将在接下来的教程中介绍以上所有内容并进行更深入的介绍。 翻译自: https://www.javacodegeeks.com/2015/11/getting-started-with-mockito.htmlmockito入门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建网360 网站建设电影网站建设多少钱

通用文字识别OCR:多场景、多语种、高精度的整图文字检测和识别服务,多项指标行业领先,可识别中、英、日、韩、法、德多种语言。 企业基本信息API:通过公司名称/公司ID/注册号或社会统一信用代码获取企业基本信息,企业…

网站 数据备份简历设计网站

1.基于java注解实现websocket服务器端 1.1需要的类 1.1.1服务终端类 用java注解来监听连接ServerEndpoint、连接成功OnOpen、连接失败OnClose、收到消息等状态OnMessage 1.1.2配置类 把spring中的ServerEndpointExporter对象注入进来 2.1代码示例 2.1.1 maven配置 <…

怎样建立一个自己的网站如何建设音乐网站

重启您的CentOS系统。 在GRUB引导加载器启动过程中&#xff0c;当看到启动画面时&#xff0c;按下e键进入编辑模式。 找到以 linux16 或 linux 开头的启动行。 在该行的末尾添加 rd.break 或者ro&#xff08;只读&#xff09;修改为 rw 加init/sysroot/bin/sh参数&#xff0…

在线电影网站建设凡科网站怎么做外链

ChatGPT在语义理解和信息提取领域有着广泛的应用潜力。语义理解是指对文本进行深层次的理解&#xff0c;包括词义、句义和篇章义等层面的理解。信息提取是指从文本中自动抽取结构化的信息&#xff0c;如实体、关系、事件等。ChatGPT作为一种预训练语言模型&#xff0c;具有丰富…

重庆sem网站推广渭南做网站电话

启动Unity发布的exe并且添加启动参数 在启动Unity的时候添加一些启动的参数。 代码解释 在启动的时候获取的启动参数如果没有获取到正确的启动参数那么就退出程序&#xff0c;这个代码仅仅在发布到windows之后才会生效&#xff0c;在编辑器下这个代码虽然会获取到参数但是不能…

天津河东做网站贵吗关于校园网站的策划书

目录 一、创建Web页面浏览器 1.示例源码 2.生成效果 二、局域网聊天程序 1.类 2.服务器端 3.客户端 一、创建Web页面浏览器 TextBox 控件用来输入要浏览的网页地址&#xff0c;Button控件用来执行浏览网页操作&#xff0c; WebBrowser控件用来显示要浏览的网页。这个控…

南宁市建设处网站分类模板wordpress

Zipkin是一款开源的分布式链路追踪系统,主要功能包括: 1. 采集跟踪数据 - Zipkin client库负责收集并上报各服务的请求信息。 2. 存储跟踪数据 - 存储层默认采用Zipkin自带的基于内存的快速存储,也支持整合MySQL、Cassandra等外部存储。 3. 查询接口 - 提供RESTful API进行跟…

山东建设厅执业资格注册中心网站手机小程序开发教程

这里假设我们的公司名叫果冻&#xff08;Jelly&#xff09;&#xff0c;我们准备开发一款对标苹果 14 的手机&#xff0c;取名叫 大米14&#xff08;Rice14&#xff09;。 接下来我们在源码中添加我们自己的产品&#xff08;Product&#xff09; 在 device 目录下添加如下的目…

linux网站服务器搭建电子商务网站建设怎么做

今天这篇文章我们主要讲一下Android系统中的截屏事件处理流程。用过android系统手机的同学应该都知道&#xff0c;一般的android手机按下音量减少键和电源按键就会触发截屏事件&#xff08;国内定制机做个修改的这里就不做考虑了&#xff09;。那么这里的截屏事件是如何触发的呢…

做教程网站资源放哪里有展示型网站建设方案书

目录 1.简介 2.Optional类常用方法 3.示例代码 4.示例代码仓库地址 1.简介 Java 8引入了一个重要的新特性&#xff0c;即Optional类。Optional类是为了解决空指针异常而设计的。 在Java中&#xff0c;当我们尝试访问一个空对象的属性或调用其方法时&#xff0c;很容易抛出…

购物网站欢迎页面怎么设计外贸进口流程

文章目录 过期监听准备工作稍微复习下Jedis与JedisPool 模拟延时队列优缺点**优点**&#xff1a;**缺点**&#xff1a; ZSet 实现延时队列引入依赖模拟延时队列优缺点**优点**&#xff08;跟过期监听一样&#xff09;&#xff1a;**缺点**&#xff1a; Reference Redis实现延时…

建设集团网站上海今天最新发布会

本节主要就是讲述的机器学习的数学基础&#xff0c;提到数学基础&#xff0c;可能一眼就会是满眼的枯燥、没意思&#xff0c;但是成就英雄的路上注定了孤独&#xff0c;要想要真正的在学术上有所突破就必须挨得住寂寞&#xff0c;受得住孤独&#xff0c;才能真正的走进熟悉直到…

站长工具seo综合查询adc舟山市普陀区建设局网站

全球图形学领域教育的领先者、自研引擎的倡导者、底层技术研究领域的技术公开者&#xff0c;东汉书院在致力于使得更多人群具备内核级竞争力的道路上&#xff0c;将带给小伙伴们更多的公开技术教学和视频&#xff0c;感谢一路以来有你的支持。我们正在用实际行动来帮助小伙伴们…

做视频图片博客网站怎样把自己的网站推广出去

一、题目要求&#xff1a; 某学校要设计一个数据库,学校的业务规则概括如下&#xff1a; 学校内班级若干,每个班级内又有学生若干。 学校开设课程若干,只有某些特定的班级能上指定的课程。 学生选修某些课程,但是在自身班级下的课程是必修。 学校定期组织考试&#xff0c;成绩…

用vs做的网站怎么打开吗网站开发有侵权吗

微信小程序实战系列 《微信小程序实战-01翻页时钟-1》《微信小程序实战-02翻页时钟-2》 文章目录 微信小程序实战系列前言动态翻页效果实现clock.wxmlclock.wxssclock.js运行效果 总结 前言 本文继续完成最后一个部分“动态翻页效果”。 动态翻页效果实现 clock.wxml <…

google网站建设wordpress 4.5.2 下载

社区团购业务正在中国迅速崭露头角&#xff0c;而随着行业的快速发展&#xff0c;也带来了一系列挑战&#xff0c;包括供应链管理、物流配送、产品质量和用户体验等问题。本文将探讨这些问题&#xff0c;并提出一些可能的解决方案。 一、问题和挑战 1.1 供应链管理 对于社区团…

如何让自己的网站被搜索引擎收录打广告去哪个平台免费

虽然口令的安全性很值得担忧&#xff0c;但是口令在OpenSSL中是经常使用的&#xff0c;这是没有办法替代的一种简易的保护数据的方法。OpenSSL中使用口令的地方很多&#xff0c;比如密钥的加密和解密&#xff0c;等等。OpenSSL的指令提供了多种灵活的口令输入方法&#xff0c;但…

小语种服务网站定制微信小程序开发价格

作者主页&#xff1a;作者主页 数据结构专栏&#xff1a;数据结构 创作时间 &#xff1a;2024年5月18日 前言&#xff1a; 今天我们就给大家带来几种排序的讲解&#xff0c;包括冒泡排序&#xff0c;插入排序&#xff0c;希尔排序&#xff0c;选择排序&#xff0c;堆排序&…

使用模板怎么建站在线购物网站开发项目

import randomrandom.shuffle(a) # a是一个列表

京东云网站建设深圳南山网站建设工作室

一、静态协议的优缺点&#xff1a; 缺点&#xff1a; 1、中大型网络配置量过大 2、不能基于拓扑的变化而实时的变化 优点&#xff1a; 1、不会额外暂用物理资源 2、安全问题 3、计算路径问题 简单、小型网络建议使用静态路由&#xff1b;中大型较复杂网络&#xff0c;建议使用…