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

有免费注册网站吗做教育网站还挣钱吗

有免费注册网站吗,做教育网站还挣钱吗,html5建一个网站,常见的c2c平台有Mockito结合TestNG快速入门 什么是Mockito Mockito 是一个专门用于 Java 的强大测试框架#xff0c;主要用来创建和管理模拟对象#xff0c;辅助开发者进行单元测试#xff0c;具有以下特点和功能#xff1a; 创建模拟对象#xff1a;能通过简洁的语法创建类或接口的模…Mockito结合TestNG快速入门 什么是Mockito Mockito 是一个专门用于 Java 的强大测试框架主要用来创建和管理模拟对象辅助开发者进行单元测试具有以下特点和功能 创建模拟对象能通过简洁的语法创建类或接口的模拟版本这些模拟对象可作为真实对象的替代品在调试期间使用帮助隔离外部依赖。比如在测试一个依赖其他服务如账户服务、数据库访问服务等的业务逻辑时可模拟这些外部服务避免在测试中涉及真实的复杂操作如真的修改数据库数据、调用远程接口等 。定义行为可以对模拟对象的方法进行 “桩Stubbing” 设置即指定其返回值或让其抛出异常。例如使用when(...).thenReturn(...)来定义方法返回特定值用thenThrow()模拟方法抛出异常方便测试错误处理逻辑。验证交互提供验证机制通过verify(...)方法检查模拟对象的方法是否按照预期被调用以及调用的次数从而验证代码与模拟对象之间的交互是否正确 引入的依赖 mockito-core !-- https://mvnrepository.com/artifact/org.mockito/mockito-core -- dependencygroupIdorg.mockito/groupIdartifactIdmockito-core/artifactIdversion5.15.2/versionscopetest/scope /dependencytestng  !-- https://mvnrepository.com/artifact/org.testng/testng --dependencygroupIdorg.testng/groupIdartifactIdtestng/artifactIdversion7.11.0/versionscopetest/scope/dependency 为什么需要mock 可以知道这个方法的调用情况调用了多少次参数就是多少 给这个对象的行为做一个定义来指定返回结果或者指定特定的动作 当使用mock对象时如果不对其行为进行定义则mock对象方法的返回值为返回类型的默认值 验证和断言 验证vertify方法 验证是校验待验证的对象是否发生过某些行为 package com.example.testng;import org.mockito.Mockito; import org.testng.annotations.Test;import java.util.Random;public class MockitoDemoTest {Testpublic void test(){//mock一个对象Random mock Mockito.mock(Random.class);//输出随机数System.out.println(mock.nextInt());//验证我们的mock对象是否用了nextInt()这个方法Mockito.verify(mock).nextInt();} }为什么我们的执行结果一直是0 这是因为我们没有给我们的mock出来的对象定义行为 断言Assert 判断我们返回的结果是否符合我们的预期 package com.example.testng;import org.mockito.Mockito; import org.testng.Assert; import org.testng.annotations.Test;import java.util.Random;public class MockitoDemoTest {Testpublic void test() {//mock一个对象Random mock Mockito.mock(Random.class);Mockito.when(mock.nextInt()).thenReturn(100);Assert.assertEquals(100, mock.nextInt());} } 符合预期我们成功通过 不符合预期我们测试失败 package com.example.testng;import org.mockito.Mockito; import org.testng.Assert; import org.testng.annotations.Test;import java.util.Random;public class MockitoDemoTest {Testpublic void test() {//mock一个对象Random mock Mockito.mock(Random.class);Mockito.when(mock.nextInt()).thenReturn(100);Assert.assertEquals(101, mock.nextInt());} } 给Mock对象进行打桩 打桩的意思其实就是对mock对象的行为进行定义 打桩的话是mockito里面的when方法定义我们的行为 Mock注解 我们的mock注解必须搭配MockitoAnnotations.openMocks(testClass)方法一起使用 我们使用Mock注解来Mock对象而不是在代码里面手动Mock我们的对象 package com.example.testng;import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.testng.Assert; import org.testng.annotations.Test;import java.util.Random;public class MockitoDemoTest {Mockprivate Random mock;Testpublic void test() {MockitoAnnotations.openMocks(this);Mockito.when(mock.nextInt()).thenReturn(100);Assert.assertEquals(100, mock.nextInt());} } BeforeTets与AfterTest package com.example.testng;import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test;import java.util.Random;public class MockitoDemoTest {Mockprivate Random mock;BeforeTestvoid setup() {System.out.println(测试前的准备);}AfterTestvoid end() {System.out.println(测试结束);}Testpublic void test() {MockitoAnnotations.openMocks(this);Mockito.when(mock.nextInt()).thenReturn(100);Assert.assertEquals(100, mock.nextInt());} } Spy方法与Spy注解 spy方法与mock方法的不同是 1.被spy的对象会走真实的方法而mock对象不会 2.spy{}方法的参数是对象实例mock的参数是class package com.example.testng;import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test;import java.util.Random;public class MockitoDemoTest {Spyprivate Random mock;BeforeTestvoid setup() {MockitoAnnotations.openMocks(this);}Testpublic void test() {Assert.assertEquals(100, mock.nextInt());} } 我们没有打桩而且我们是Spy注解所以我们不会输出0而是会去调用真正的Random方法 如果我们打桩了的话那还是会按照我们打桩定义的规则来 打桩与Mock静态方法 4个常见的打桩方法 thenCallRealMethod thenReturn thenThrow thenAnswer package com.example.testng;import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.testng.Assert; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test;import java.util.Random;import static org.mockito.Mockito.when;public class MockitoDemoTest {Spyprivate Random mock;BeforeTestvoid setup() {MockitoAnnotations.openMocks(this);}Testpublic void test() {//调用真实方法when(mock.nextInt()).thenCallRealMethod();//定义返回值when(mock.nextInt()).thenReturn(1);//定义返回什么错误when(mock.nextInt()).thenThrow(new RuntimeException());//自定义响应逻辑when(mock.nextInt()).thenAnswer(new AnswerInteger() {Overridepublic Integer answer(InvocationOnMock invocation) throws Throwable {// 这里可以编写自定义的逻辑// invocation 包含了方法调用的信息例如方法名、参数等// 这里简单返回一个固定值 42return 42;}});} }Mock静态方法 依赖 mockito-inline依赖包含了mockito-code依赖 注意我们使用mockito-inline依赖的时候要把mockito-code依赖注释掉我们不能同时引用 !-- https://mvnrepository.com/artifact/org.mockito/mockito-inline -- dependencygroupIdorg.mockito/groupIdartifactIdmockito-inline/artifactIdversion5.2.0/versionscopetest/scope /dependency在软件开发的单元测试中有时候我们需要对静态方法进行模拟Mock这样可以更好地控制测试环境、隔离依赖提高测试的可维护性和稳定性。下面详细介绍模拟静态方法的相关内容以 Java 语言结合 Mockito 框架为例 为什么需要 Mock 静态方法   隔离依赖静态方法可能依赖于外部资源如文件系统、数据库等。在单元测试中我们希望避免这些外部依赖的影响通过模拟静态方法可以将测试与外部资源隔离开来 控制返回值静态方法的返回值可能受到多种因素的影响通过模拟静态方法我们可以精确控制其返回值从而更方便地验证业务逻辑 使用例子 我们这个类里面有个静态方法 public class StaticUtils {public static int add(int a, int b) {return a b;} } 使用mockStatic 使用 try-with-resources语句确保 MockedStatic 对象在使用完毕后自动关闭避免对后续测试产生影响 import org.junit.jupiter.api.Test; import org.mockito.MockedStatic;import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mockStatic;public class StaticUtilsTest {Testpublic void testMockStaticMethod() {// 使用 try-with-resources 语句创建 MockedStatic 对象try (MockedStaticStaticUtils mockedStatic mockStatic(StaticUtils.class)) {// 定义静态方法的行为mockedStatic.when(() - StaticUtils.add(2, 3)).thenReturn(10);// 调用静态方法int result StaticUtils.add(2, 3);// 验证结果assertEquals(10, result);}} } 单元测试如何提高我们的代码覆盖率 InjectMocks注解 剩下的mock和spy注解修饰的对象会自动注入到被InjectMocks注解修饰的对象里面
http://www.pierceye.com/news/351690/

相关文章:

  • 网站做百度推广需要哪些条件店铺推广软文范例
  • 台州企业网站搭建特点迅美网站建设
  • 做营销网站推广官方网站建设方法
  • 网页设计精选网站网站查询功能怎么做
  • 重庆专业网站推广流程建立平台的步骤
  • 舟山市普陀区建设局网站net网站开发 兼职
  • 网站备案流程阿里云南宁网站建设官网
  • h5网站制作介绍简单的静态 新闻 asp 网站源码
  • 济南seo网站推广公司帮别人做彩票网站吗
  • 郑州市网站建设怎么样wordpress wp editor
  • 台州网站建设 推广公司网络营销课程总结范文
  • 网站 外包 版权杭州做官网的有哪些公司
  • 微信网站html5中山平面设计公司
  • 建站网站教程视频世界网站排名
  • 做小程序的流程seo 整站优化
  • 网站前台代码国内网站主机
  • 网站后台asp源码高明顺德网站建设
  • 网站建设推广软文网络规划设计师考试全程指导(第2版) pdf
  • 备案网站多少钱支持wordpress的空间
  • 哈尔滨网页模板建站wordpress网页设定
  • 哔哩哔哩网站怎么做视频软件进入公众号会不会泄露个人信息
  • 域名过期做的网站怎么办wap网站前景
  • 网站设计公司 宁波少儿编程课
  • 建设信用卡银行积分商城网站网站关键词优化培训
  • 网站建设对电子商务的意义深圳网站设计兴田德润简介
  • 门设计的网站建设北京最大专业网站建设
  • 黄埔建网站公司长沙 网页制作
  • 网站页面海珠网站建设方案
  • 东宁网站制作公司产品彩页设计
  • 郑州大搜索网站为什么要建立网站