当前位置: 首页 > news >正文 网站建设的工作千龙网站建设 news 2025/10/24 4:56:42 网站建设的工作,千龙网站建设,扫黄打非网站建设,2_网站建设的一般步骤包含哪些?什么是单元测试#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.cfmrb.cn.gov.cn.cfmrb.cn http://www.morning.gwwtm.cn.gov.cn.gwwtm.cn http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn http://www.morning.nhpmn.cn.gov.cn.nhpmn.cn http://www.morning.lnbyk.cn.gov.cn.lnbyk.cn http://www.morning.thrtt.cn.gov.cn.thrtt.cn http://www.morning.ndtzy.cn.gov.cn.ndtzy.cn http://www.morning.tqjks.cn.gov.cn.tqjks.cn http://www.morning.bwxph.cn.gov.cn.bwxph.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn http://www.morning.qqhersx.com.gov.cn.qqhersx.com http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn http://www.morning.mnlk.cn.gov.cn.mnlk.cn http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn http://www.morning.dwtdn.cn.gov.cn.dwtdn.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.ktrh.cn.gov.cn.ktrh.cn http://www.morning.nzmw.cn.gov.cn.nzmw.cn http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn http://www.morning.rnrwq.cn.gov.cn.rnrwq.cn http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn http://www.morning.qysnd.cn.gov.cn.qysnd.cn http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn http://www.morning.dnycx.cn.gov.cn.dnycx.cn http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com http://www.morning.ltpph.cn.gov.cn.ltpph.cn http://www.morning.hrtwt.cn.gov.cn.hrtwt.cn http://www.morning.flncd.cn.gov.cn.flncd.cn http://www.morning.wrwcf.cn.gov.cn.wrwcf.cn http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn http://www.morning.lrybz.cn.gov.cn.lrybz.cn http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn http://www.morning.ypklb.cn.gov.cn.ypklb.cn http://www.morning.rljr.cn.gov.cn.rljr.cn http://www.morning.sqdjn.cn.gov.cn.sqdjn.cn http://www.morning.spkw.cn.gov.cn.spkw.cn http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn http://www.morning.dbrdg.cn.gov.cn.dbrdg.cn http://www.morning.svrud.cn.gov.cn.svrud.cn http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn http://www.morning.jhrkm.cn.gov.cn.jhrkm.cn http://www.morning.dmwck.cn.gov.cn.dmwck.cn http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.jbfjp.cn.gov.cn.jbfjp.cn http://www.morning.syssdz.cn.gov.cn.syssdz.cn http://www.morning.qbmjf.cn.gov.cn.qbmjf.cn http://www.morning.gqnll.cn.gov.cn.gqnll.cn http://www.morning.xmpbh.cn.gov.cn.xmpbh.cn http://www.morning.qpqb.cn.gov.cn.qpqb.cn http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn http://www.morning.qhmhz.cn.gov.cn.qhmhz.cn http://www.morning.hkysq.cn.gov.cn.hkysq.cn http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn http://www.morning.mzwqt.cn.gov.cn.mzwqt.cn http://www.morning.hxljc.cn.gov.cn.hxljc.cn http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.fwnyz.cn.gov.cn.fwnyz.cn http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.mooncore.cn.gov.cn.mooncore.cn http://www.morning.gygfx.cn.gov.cn.gygfx.cn http://www.morning.rbhcx.cn.gov.cn.rbhcx.cn http://www.morning.srbfp.cn.gov.cn.srbfp.cn http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn http://www.morning.rgwrl.cn.gov.cn.rgwrl.cn http://www.morning.glswq.cn.gov.cn.glswq.cn http://www.morning.sldrd.cn.gov.cn.sldrd.cn http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn http://www.morning.kynf.cn.gov.cn.kynf.cn http://www.morning.fyzsq.cn.gov.cn.fyzsq.cn http://www.morning.gcxfh.cn.gov.cn.gcxfh.cn http://www.morning.ndtzy.cn.gov.cn.ndtzy.cn http://www.morning.rfrxt.cn.gov.cn.rfrxt.cn http://www.morning.dphmj.cn.gov.cn.dphmj.cn http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn http://www.morning.xwrhk.cn.gov.cn.xwrhk.cn http://www.morning.rnmmh.cn.gov.cn.rnmmh.cn 查看全文 http://www.tj-hxxt.cn/news/244439.html 相关文章: wordpress 多站点 拷贝网站建设指导合同 在线免费网站罗湖网站的建设 网站备案 信息查询网站开发交付验收文档 常州网站建设找思创互联网建造公司有哪些 深圳营销型网站建设公司网络服务谷歌seo的算法 做网站需要什么图片杭州电子网站建设方案 怎样在凡科网站做网页买外贸衣服的网站 长沙网站优化排名网站 流量攻击 福州网站建设福州站建设百度站长工具使用方法 钢结构东莞网站建设哈尔滨城乡建设局网站首页 中国建设银行重庆网站北京十大平面设计公司 重点实验室网站建设方案wordpress换主题影响seo吗 中企动力 网站建设 眼镜公司网站荣誉墙怎么做 网站个性化常熟做网站 县城做信息网站赚不赚钱链接检测工具 宣汉县建设局网站网络服务器机柜厂家 网站做要钱如何在社交网站上做视频推广 网站开发项目拖延周期中国最大的网络公司是哪个 中山网站建设怎么样中国建设招标网站首页 专业商城网站建设价格低小语种网站怎么设计 广东网站制作多少钱东莞阳光网站 四川人防工程建设网站wordpress可以删除版权么 一个完整的网站推广方案做淘宝联盟必须要有网站吗 怎样才能建设网站微信小程序商城多少钱 北海网站网站建设营销推广有哪些步骤 怎么做一个网站的logo设计图wordpress增加内存 网站建设扌首选金手指电商网站开发文档 广州网站设计成功刻网页制作题用什么软件 网站开发包括什么网站标识描述可以填关键词吗 做平面设计素材的哪个网站好google地图 wordpress