当前位置: 首页 > news >正文 扫黄打非网站建设黑龙江龙采做网站如何 news 2025/10/28 23:46:10 扫黄打非网站建设,黑龙江龙采做网站如何,wordpress获取评论数,营销策划方案论文什么是单元测试#xff1f; 单元测试(unit testing)#xff0c;是指对软件中的最小可测试单元进行检查和验证的过程就叫单元测试。 单元测试是开发人员编写的一小段代码#xff0c;用于检验被测代码的一个很小的、很明确的(代码) 功能是否正确。执行单元测试就是为了证明某…什么是单元测试 单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证的过程就叫单元测试。 单元测试是开发人员编写的一小段代码用于检验被测代码的一个很小的、很明确的(代码) 功能是否正确。执行单元测试就是为了证明某段代码的执行结果是否符合我们的预期。如果测试结果符合我们的预期,称之为测试通过否则就是测试未通过(或者叫测试失败) Java 中的最小测试单元就到方法了也就说对方法的测试就是单元测试 单元测试的作用 在没有接触单元测试之前我们是怎么做测试的一般有三个方法 方式弊端启动整个应用像用户正常操作一样操作界面调用接口每次测试都需要启动整个项目在代码某个地方写一个临时入口例如main方法测试用完就删除不然影响项目运行速度或效率利用postman工具调用接口每次测试启动服务 在时间允许的情况下编写单元测试是程序员对代码的自测这是对自己代码的负责。 写单元测试的两个动机 保证或验证实现功能。保护已经实现的功能不被破坏。 Spring Boot引入单元测试 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope /dependency注解的使用 注解作用SpringBootTest获取启动类加载配置寻找主配置启动类RunWith(SpringRunner.class)让JUnit运行Spring的测试环境,获得Spring环境的上下文的支持 RunWith(SpringRunner.class) SpringBootTest public class ApplicationTest { }SpringBootTest 重要参数 args 应用程序参数如:args “–app.testone”classes Spring Boot应用启动入口类名该参数不指定时由Spring Boot默认查找。webEnvironment 默认情况下SpringBootTest不会启动服务器。当测试Web应用时需指定该参数以便加载上下文环境。 WebEnvironment枚举值说明 MOCK 默认值加载WebApplicationContext并提供模拟Web环境。使用此注释时不会启动嵌入式服务器。RANDOM_PORT 启动应用并随机监听一个端口。DEFINED_PORT 启动应用并监听自定义的端口(来自application.properties)或使用默认端口8080。NONE ApplicationContext通过使用加载SpringApplication但不提供任何网络环境(模拟或其他方式)。 工具Junit4 注解的使用 注解作用Test编写一般测试用例用Test(timeout 1000)测试方法执行超过1000毫秒后算超时测试将失败Test(expected Exception.class)测试方法期望得到的异常类如果方法执行没有抛出指定的异常则测试失败。Before在每个方法测试前执行一般用来初始化方法比如我们在测试别的方法时类中与其他测试方法共享的值已经被改变为了保证测试结果的有效性我们会在Before注解的方法中重置数据After在每个测试方法执行后在方法执行完成后要做的事情BeforeClass在所有测试方法执行前执行AfterClass在所有测试方法执行后执行Ignore修饰的类或方法会被测试运行器忽略RunWith在 Junit 中有很多个 Runner他们负责调用你的测试代码每一个 Runner 都有各自的特殊功能你根据需要选择不同的 Runner 来运行你的测试代码 什么是Mock 在面向对象的程序设计中模拟对象英语mock object是以可控的方式模拟真实对象行为的假对象。在编程过程中通常通过模拟一些输入数据来验证程序是否达到预期结果。 为什么使用Mock对象 使用模拟对象可以模拟复杂的、真实的对象行为。如果在单元测试中无法使用真实对象可采用模拟对象进行替代。 spring测试框架提供了两种方式独立安装和集成Web环境测试此种方式并不会集成真正的web环境而是通过相应的Mock API进行模拟测试无须启动服务器 Java的Mockito框架 Mockito是一款用于java开发的mock测试框架用于快速创建和配置mock对象。通过创建外部依赖的 Mock 对象, 然后将此 Mock 对象注入到测试类中简化有外部依赖的类的测试。 MockMvc的概念 MockMvc是由spring-test包提供实现了对Http请求的模拟能够直接使用网络的形式转换到Controller的调用使得测试速度快、不依赖网络环境。同时提供了一套验证的工具结果的验证十分方便。 接口MockMvcBuilder提供一个唯一的build方法用来构造MockMvc。主要有两个实现StandaloneMockMvcBuilder和DefaultMockMvcBuilder。 StandaloneMockMvcBuilder指定 WebApplicationContext它将会从该上下文获取相应的控制器并得到相应的 MockMvc RunWith(SpringRunner.class) SpringBootTest public class UserControllerTest {Autowiredprivate WebApplicationContext webApplicationContext;private MockMvc mockMvc;Beforepublic void setUp() throws Exception {mockMvc MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); } DefaultMockMvcBuilder通过参数指定一组控制器这样就不需要从上下文获取了 RunWith(SpringRunner.class) SpringBootTest public class UserControllerTest {private MockMvc mockMvc;Beforepublic void setUp() throws Exception {mockMvc MockMvcBuilders.standaloneSetup(new UserController()).build();} } // ... import static org.hamcrest.Matchers.containsString; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;RunWith(SpringRunner.class) SpringBootTest public class UserControllerTest {Autowiredprivate WebApplicationContext webApplicationContext;private MockMvc mockMvc;Beforepublic void setUp() {mockMvc MockMvcBuilders.webAppContextSetup(webApplicationContext).build();}Testpublic void getUser() {mockMvc.perform(get(/v1/users/1).accept(MediaType.APPLICATION_JSON_UTF8)).andExpect(status().isOk()).andExpect(content().string(containsString(\name\:\lyTongXue\)));}} MockMVC的基本步骤 (1) mockMvc.perform执行一个请求。 (2) MockMvcRequestBuilders.get(“XXX”)构造一个请求。 (3) ResultActions.param添加请求传值 (4) ResultActions.accept设置返回类型 (5) ResultActions.andExpect添加执行完成后的断言。 (6) ResultActions.andDo添加一个结果处理器表示要对结果做点什么事情比如处使用print输出整个响应结果信息。 (7) ResultActions.andReturn表示执行完成后返回相应的结果。 方法名描述Mockito.mock(classToMock)模拟对象Mockito.verify(mock)验证行为是否发生Mockito.when(methodCall).thenReturn(value1).thenReturn(value2)触发时第一次返回value1第n次都返回value2Mockito.doThrow(toBeThrown).when(mock).[method]模拟抛出异常。Mockito.mock(classToMock,defaultAnswer)使用默认Answer模拟对象Mockito.when(methodCall).thenReturn(value)参数匹配Mockito.doReturn(toBeReturned).when(mock).[method]参数匹配直接执行不判断Mockito.when(methodCall).thenAnswer(answer))预期回调接口生成期望值Mockito.doAnswer(answer).when(methodCall).[method]预期回调接口生成期望值直接执行不判断Mockito.spy(Object)用spy监控真实对象,设置真实对象行为Mockito.doNothing().when(mock).[method]不做任何返回Mockito.doCallRealMethod().when(mock).[method] //等价于Mockito.when(mock.[method]).thenCallRealMethod();调用真实的方法reset(mock)重置mock 使用断言 简单的断言说明 方法名描述assertEquals判断两个对象或两个原始类型是否相等assertNotEquals判断两个对象或两个原始类型是否不相等assertSame判断两个对象引用是否指向同一个对象assertNotSame判断两个相关对象是否不指向同一个对象assertTrue判断给定的布尔值是否为trueassertFalse判断给定的布尔值是否为falseassertNull判断给定的对象引用是否为nullassertNotNull判断给定的对象引用是否不为null 单元测试生成插件 TestMe插件可以智能分析被测试类的依赖类结合MockitoJunit等单元测试框架生成Mock/InjectMocks依赖关系自动生成单元测试类。 下载插件 File——Settings——Plugins搜索TestMe然后install就好了插件安装完成后需要重启一下。 我们打开一个类这个类就是我们即将要作为实验的类。光标定位到代码里右击鼠标选择Generate…选择TestMe…后弹出Test Class选择的是Junit4。 单元测试规范 1、单元测试代码必须写在如下工程目录 src/test/java不允许写在业务代码目录下。 2、单元测试的基本目标:语句覆盖率达到 70%;核心模块的语句覆盖率和分支覆盖率都要达到 100%。 3、在工程规约的应用分层中提到的 DAO 层Manager 层可重用度高的 Service都应该进行单元测试。 4、编写单元测试代码遵守 BCDE 原则以保证被测试模块的交付质量。 阿里巴巴 Java 开发手册 \9. 【推荐】编写单元测试代码遵守 BCDE 原则以保证被测试模块的交付质量。 Border边界值测试包括循环边界、特殊取值、特殊时间点、数据顺序等 Correct正确的输入并得到预期的结果 Design与设计文档相结合来编写单元测试 Error强制错误信息输入如:非法数据、异常流程、非业务允许输入等并得到预期的结果 5、对于数据库相关的查询更新删除等操作不能假设数据库里的数据是存在的 或者直接操作数据库把数据插入进去请使用程序插入或者导入数据的方式来准备数据。 6、和数据库相关的单元测试可以设定自动回滚机制不给数据库造成脏数据。或者 对单元测试产生的数据有明确的前后缀标识。 7、对于不可测的代码建议做必要的重构使代码变得可测避免为了达到测试要求而书写不规范测试代码。 8、在设计评审阶段开发人员需要和测试人员一起确定单元测试范围单元测试最好覆盖所有测试用例。 9、单元测试作为一种质量保障手段不建议项目发布后补充单元测试用例建议在项目提测前完成单元测试。 10、为了更方便地进行单元测试业务代码应避免以下情况 构造方法中做的事情过多 存在过多的全局变量和静态方法 存在过多的外部依赖 存在过多的条件语句。说明:多层条件语句建议使用卫语句、策略模式、状态模式等方式重构 11、不要对单元测试存在如下误解 那是测试同学干的事情 单元测试代码是多余的。系统的整体功能与各单元部件的测试正常与否是强相关的 单元测试代码不需要维护一年半载后那么单元测试几乎处于废弃状态 单元测试与线上故障没有辩证关系好的单元测试能够最大限度地规避线上故障 文章转载自: http://www.morning.wnbpm.cn.gov.cn.wnbpm.cn http://www.morning.gmrxh.cn.gov.cn.gmrxh.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.ymjgx.cn.gov.cn.ymjgx.cn http://www.morning.kngqd.cn.gov.cn.kngqd.cn http://www.morning.srbfp.cn.gov.cn.srbfp.cn http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn http://www.morning.srcth.cn.gov.cn.srcth.cn http://www.morning.zwgbz.cn.gov.cn.zwgbz.cn http://www.morning.ldnrf.cn.gov.cn.ldnrf.cn http://www.morning.pngph.cn.gov.cn.pngph.cn http://www.morning.sjpht.cn.gov.cn.sjpht.cn http://www.morning.rcfwr.cn.gov.cn.rcfwr.cn http://www.morning.xbptx.cn.gov.cn.xbptx.cn http://www.morning.c7622.cn.gov.cn.c7622.cn http://www.morning.lzttq.cn.gov.cn.lzttq.cn http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn http://www.morning.epeij.cn.gov.cn.epeij.cn http://www.morning.bssjz.cn.gov.cn.bssjz.cn http://www.morning.xnltz.cn.gov.cn.xnltz.cn http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn http://www.morning.qggcc.cn.gov.cn.qggcc.cn http://www.morning.xpmhs.cn.gov.cn.xpmhs.cn http://www.morning.bqpgq.cn.gov.cn.bqpgq.cn http://www.morning.qnywy.cn.gov.cn.qnywy.cn http://www.morning.rynqh.cn.gov.cn.rynqh.cn http://www.morning.sglcg.cn.gov.cn.sglcg.cn http://www.morning.ltypx.cn.gov.cn.ltypx.cn http://www.morning.yaqi6.com.gov.cn.yaqi6.com http://www.morning.pxjp.cn.gov.cn.pxjp.cn http://www.morning.lpsjs.com.gov.cn.lpsjs.com http://www.morning.sjwzl.cn.gov.cn.sjwzl.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.rqxtb.cn.gov.cn.rqxtb.cn http://www.morning.klpwl.cn.gov.cn.klpwl.cn http://www.morning.mswkd.cn.gov.cn.mswkd.cn http://www.morning.rcmcw.cn.gov.cn.rcmcw.cn http://www.morning.jqllx.cn.gov.cn.jqllx.cn http://www.morning.nmfwm.cn.gov.cn.nmfwm.cn http://www.morning.cnhgc.cn.gov.cn.cnhgc.cn http://www.morning.hsksm.cn.gov.cn.hsksm.cn http://www.morning.htsrm.cn.gov.cn.htsrm.cn http://www.morning.lmxzw.cn.gov.cn.lmxzw.cn http://www.morning.bwttp.cn.gov.cn.bwttp.cn http://www.morning.tbrnl.cn.gov.cn.tbrnl.cn http://www.morning.ityi666.cn.gov.cn.ityi666.cn http://www.morning.fqsxf.cn.gov.cn.fqsxf.cn http://www.morning.wchsx.cn.gov.cn.wchsx.cn http://www.morning.qshxh.cn.gov.cn.qshxh.cn http://www.morning.zpstm.cn.gov.cn.zpstm.cn http://www.morning.sltfk.cn.gov.cn.sltfk.cn http://www.morning.mxftp.com.gov.cn.mxftp.com http://www.morning.yltyr.cn.gov.cn.yltyr.cn http://www.morning.fmgwx.cn.gov.cn.fmgwx.cn http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn http://www.morning.rrxnz.cn.gov.cn.rrxnz.cn http://www.morning.lthtp.cn.gov.cn.lthtp.cn http://www.morning.frllr.cn.gov.cn.frllr.cn http://www.morning.gbpanel.com.gov.cn.gbpanel.com http://www.morning.rfhwc.cn.gov.cn.rfhwc.cn http://www.morning.c7501.cn.gov.cn.c7501.cn http://www.morning.hympq.cn.gov.cn.hympq.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.xdqrz.cn.gov.cn.xdqrz.cn http://www.morning.rfmzs.cn.gov.cn.rfmzs.cn http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn http://www.morning.heleyo.com.gov.cn.heleyo.com http://www.morning.jrlxz.cn.gov.cn.jrlxz.cn http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn http://www.morning.rzjfn.cn.gov.cn.rzjfn.cn http://www.morning.nnhfz.cn.gov.cn.nnhfz.cn http://www.morning.dqzcf.cn.gov.cn.dqzcf.cn http://www.morning.fbfnk.cn.gov.cn.fbfnk.cn http://www.morning.tlyms.cn.gov.cn.tlyms.cn http://www.morning.rpwht.cn.gov.cn.rpwht.cn http://www.morning.hytfz.cn.gov.cn.hytfz.cn http://www.morning.mlffg.cn.gov.cn.mlffg.cn 查看全文 http://www.tj-hxxt.cn/news/257987.html 相关文章: iis6无法新建网站wordpress怎么添加icp 做免费网站教程国vs免费网站建设 godaddy 网站备案流程和规则织梦官方网站 申请做网站_论坛版主昆明装饰企业网络推广 桓台网站抖音小程序怎么开发自己的小程序 永年县网站定制的网站源码 外贸网站建设内容包括大连网站的建设 赤峰专业的网站建设王者做网站 东莞凤岗哪里有学做网站的wordpress 评论系统 山西网站开发建设四川省建设资格注册中心网站 新闻采编与制作专业简历wordpress seo收费主题 付给招聘网站的费用怎么做分录投资项目网 关于成立网站建设项目小组的通知WordPress允许修改评论内容 网站备案名字国内黑色风格的网站 网站开发成app专业设计vi公司 网站建设优化河南什么叫网站集约化建设 建站网站是什么江门网站制作建设 哪些网站才能具备完整的八项网络营销功能烟台专业网站建设公司 建设网站需要申请什么wordpress导出静态网站 彩票网站建设dadi163邯郸市市长 网站排名要怎么做企业网站建设的意义 重庆自助建站网站天津 网站建设 iis怎么使用来建设一个网站天津网上办事大厅入口 西安自助建站公司传奇网页游戏排名 企业网站建设源码 微信 手机岳阳网站建设哪里有 福建网站建设科技有限公司娃哈哈软文推广 visual studio做网站上饶市建设局官方网站 在哪找做调查赚钱的网站郑州网站建设方案 免费网站制作 最好wordpress如何增加轮播 专业制作开发公司网站2345网址大全导航下载