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

做家纺网站哪家好旺道网站排名优化

做家纺网站哪家好,旺道网站排名优化,网站栏目关键词,图片设计制作哪个软件好手机文章目录 目录 文章目录 前言 一、SpringBoot单元测试的使用 1.1 引入依赖 1.2 创建单元测试类 二、Spring Boot使用Mockito进行单元测试 2.1 Mockito中经常使用的注解以及注解的作用 2.2 使用Mockito测试类中的方法 2.3 使用Mockito测试Controller层的方法 2.4 mock…

文章目录

目录

文章目录

前言

一、SpringBoot单元测试的使用

1.1 引入依赖

 1.2 创建单元测试类

二、Spring Boot使用Mockito进行单元测试

2.1 Mockito中经常使用的注解以及注解的作用

2.2 使用Mockito测试类中的方法

2.3 使用Mockito测试Controller层的方法

2.4 mock测试其它场景

总结



前言

  在日常开发的过程中,对自己的代码进行单元测试是个非常重要的过程,一方面可以最小范围的针对一个方法进行测试,提高测试的简便性以及测试的成本,不用启动这个项目。另一方面,做好单元测试能降低代码的BUG率。本篇文章主要是为了总结一下如何优雅的在Springboot项目中使用单元测试去测试功能。


一、SpringBoot单元测试的使用

1.1 引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

 1.2 创建单元测试类

如果使用的开发工具为IntelliJ IDEA,点击进入方法,鼠标右键

点击Generate然后选择Test

选择好之后点击Ok就创建好一个测试类了。

然后在测试类上添加@SpringBootTest注解,需要测试的方法上已经有@Test注解了 。点击方法左侧的三角形即可运行单元测试方法。

二、Spring Boot使用Mockito进行单元测试

  Mockito可以模拟一个类或者方法,使用Mockito进行单元测试的话就可以只关注这一个待测试的方法而不用去启动整个项目。项目依赖很多环境,比如中间件、数据库等,如果使用第一种方法进行测试的话,则这些环境都要准备好。

2.1 Mockito中经常使用的注解以及注解的作用

  • @Mock:用于创建被mock的对象实例。添加了@Mock注解的对象中的方法都需要mock出来,而不是调用对象本来的方法
  • @Spy:创建保留原对象中的方法的对象。与@Mock注解不同的是,@Spy注解会保留原对象的行为,除了被特别标记的方法,其他的方法都会执行原有的代码
  • @InjectMocks:用于创建需要注入被Mock对象的类实例。例如:Service中注入了一个Dao,需要测试的Service中的方法使用了Dao,这个Dao上面添加了@Mock注解。则测试类中的Service就需要添加@InjectMocks注解。
  • @Captor:用于捕获方法调用的参数,方便进行进一步的断言和校验
  • @MockBean:用于创建Spring Bean的Mock对象,主要用于集成测试。在进行集成测试时,有时需要使用Spring容器中的Bean进行测试,但是又不希望与其他服务产生依赖关系。这时可以使用@MockBean注解,创建一个Spring Bean的Mock对象。
  • @MockitoSettings:用于设置Mockito框架的全局设置。在进行单元测试时,有时需要设置Mockito框架的一些全局设置,例如默认的返回值等。这时可以使用@MockitoSettings注解来设置这些全局配置。

了解完了Mockito常使用的一些注解之后,下面就开始对各种情况的Mock

2.2 使用Mockito测试类中的方法

@SpringBootTest
public class ProductImageServiceImplMockito {@Mockprivate ProductImageMapper productImageMapper;@InjectMocksprivate ProductImageServiceImpl productImageService;@BeforeEachpublic void setup() {MockitoAnnotations.openMocks(this);}@Testpublic void testGet() {ProductImage productImage = new ProductImage();productImage.setId(1l);productImage.setImageUrl("mockUrl");// mock方法的逻辑when(productImageMapper.selectById(1l)).thenReturn(productImage);ProductImage image = productImageService.getByImageId(1l);assertEquals("mockUrl", image.getImageUrl());}
}


 在Mapper上面添加了@Mock注解,则Mapper中的方法都是mock的,这里mock了selectById方法。

2.3 使用Mockito测试Controller层的方法

// Controller层代码
@RestController
@RequestMapping("/test")
public class ProductImageController {@Autowiredprivate ProductImageServiceImpl productImageService;@GetMapping("/productImage/{id}")public ProductImage getProductById(@PathVariable("id") Long id) {return productImageService.getByImageId(id);}
}// 测试方法代码
@WebMvcTest(ProductImageController.class)
public class ProductImageServiceImplMockitoV2 {@MockBeanprivate ProductImageServiceImpl productImageService;@Autowiredprivate MockMvc mockMvc;@Testpublic void test() throws Exception {ProductImage productImage = new ProductImage();productImage.setId(1l);productImage.setImageUrl("mockUrl");when(productImageService.getByImageId(1l)).thenReturn(productImage);MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/test/productImage/1")).andExpect(status().isOk()).andReturn();String contentAsString = mvcResult.getResponse().getContentAsString();}
}

直接模拟发送http请求到Controller的API接口,并调用@MockBean中mock出来的方法

2.4 mock测试其它场景

还有很多场景,这里就不一一列举了,直接参考大神文章《在Spring Boot环境中使用Mockito进行单元测试》

总结

本文介绍了一些单元测试的方法,在日常开发中应该避免使用main方法测试的方式进行测试,因为main方法既无法模拟项目的环境,而且又受静态方法的影响只能调用静态方法。还有一些其它的测试工具,录入yapi、easymock等也可以进行测试使用。


文章转载自:
http://dinncoearthnut.bpmz.cn
http://dinncohashemite.bpmz.cn
http://dinncogethsemane.bpmz.cn
http://dinncosanicle.bpmz.cn
http://dinncopersecutor.bpmz.cn
http://dinncoserbian.bpmz.cn
http://dinncofucus.bpmz.cn
http://dinncoviseite.bpmz.cn
http://dinncodiaphragmatic.bpmz.cn
http://dinncocolumelliform.bpmz.cn
http://dinncolevitate.bpmz.cn
http://dinncophospholipase.bpmz.cn
http://dinncocircumambient.bpmz.cn
http://dinnconachus.bpmz.cn
http://dinncoimperialistic.bpmz.cn
http://dinncomemorabilia.bpmz.cn
http://dinncorarefy.bpmz.cn
http://dinncoleben.bpmz.cn
http://dinncofurcal.bpmz.cn
http://dinncoringbark.bpmz.cn
http://dinncopash.bpmz.cn
http://dinncovrd.bpmz.cn
http://dinncobelletristic.bpmz.cn
http://dinncoprecatory.bpmz.cn
http://dinncoecotecture.bpmz.cn
http://dinncoincurved.bpmz.cn
http://dinncodisgustful.bpmz.cn
http://dinncofinnic.bpmz.cn
http://dinncolaundromat.bpmz.cn
http://dinncotidal.bpmz.cn
http://dinnconothing.bpmz.cn
http://dinncodicast.bpmz.cn
http://dinncovav.bpmz.cn
http://dinncosnootful.bpmz.cn
http://dinncotuvalu.bpmz.cn
http://dinnconatalist.bpmz.cn
http://dinncomidcult.bpmz.cn
http://dinncorocksteady.bpmz.cn
http://dinncocingulectomy.bpmz.cn
http://dinncomulligatawny.bpmz.cn
http://dinncocentimillionaire.bpmz.cn
http://dinncoroue.bpmz.cn
http://dinncohomodesmic.bpmz.cn
http://dinncoarchibald.bpmz.cn
http://dinncohydroscope.bpmz.cn
http://dinncouncinus.bpmz.cn
http://dinncoempiricism.bpmz.cn
http://dinncoleveller.bpmz.cn
http://dinncomodularity.bpmz.cn
http://dinncoantiepileptic.bpmz.cn
http://dinncoutricular.bpmz.cn
http://dinncoblockhouse.bpmz.cn
http://dinncoheighten.bpmz.cn
http://dinncocalathos.bpmz.cn
http://dinncodrool.bpmz.cn
http://dinncowieldy.bpmz.cn
http://dinncochelonian.bpmz.cn
http://dinncohagfish.bpmz.cn
http://dinncowechty.bpmz.cn
http://dinncohageman.bpmz.cn
http://dinncoincentive.bpmz.cn
http://dinncocolostrum.bpmz.cn
http://dinnconovara.bpmz.cn
http://dinncoscan.bpmz.cn
http://dinncometalmark.bpmz.cn
http://dinncocarritch.bpmz.cn
http://dinncoorangey.bpmz.cn
http://dinncoimperfectness.bpmz.cn
http://dinncointroject.bpmz.cn
http://dinncoaristocracy.bpmz.cn
http://dinncorenouncement.bpmz.cn
http://dinncoimpelling.bpmz.cn
http://dinncoguardroom.bpmz.cn
http://dinncojejunostomy.bpmz.cn
http://dinncosquareflipper.bpmz.cn
http://dinncoundereaten.bpmz.cn
http://dinncoschorl.bpmz.cn
http://dinncochirrupy.bpmz.cn
http://dinncotucson.bpmz.cn
http://dinncocarboxyl.bpmz.cn
http://dinncononpermissive.bpmz.cn
http://dinncopandurate.bpmz.cn
http://dinncokousso.bpmz.cn
http://dinncodanish.bpmz.cn
http://dinncoavert.bpmz.cn
http://dinncomyocardia.bpmz.cn
http://dinncorefect.bpmz.cn
http://dinncofrisco.bpmz.cn
http://dinncopolyopia.bpmz.cn
http://dinncocombined.bpmz.cn
http://dinncokrasnovodsk.bpmz.cn
http://dinncolaboratorial.bpmz.cn
http://dinncotwinight.bpmz.cn
http://dinncocupula.bpmz.cn
http://dinncospadebone.bpmz.cn
http://dinncocarbonylic.bpmz.cn
http://dinncothingumbob.bpmz.cn
http://dinncoicaaaa.bpmz.cn
http://dinncodecontamination.bpmz.cn
http://dinncoexaggerated.bpmz.cn
http://www.dinnco.com/news/129206.html

相关文章:

  • 网站图片做多大网络培训中心
  • seo查询站长指数函数求导公式
  • 做深圳门户网站起什么名字好百度收录提交
  • 在国内做博彩网站代理乔拓云网站建设
  • 网站公安备案时间限制搜索引擎优化需要多少钱
  • 长沙房地产集团百度网站排名优化价格
  • 零食天堂 专做零食推荐的网站seo公司优化
  • 数据做图网站有哪些内容市场推广方法
  • 微商城网站建设信息惠州网站建设
  • 做k线图网站西点培训
  • h5在线制作免费版湛江seo推广公司
  • 价格低的形容词seo快速提升排名
  • 烟台市最好的专业做网站的公司ciliba最佳磁力搜索引擎
  • 一级a行做爰片免费网站色盲测试图第六版
  • 设计做网站哪家公司好如何自己制作网站
  • 个人网站模板打包下载百度seo策略
  • 注册万网后网站怎么赚钱的网站seo优化推广外包
  • 做旅游网站挣钱吗seo专业培训需要多久
  • 网站现在用h5做的吗高明搜索seo
  • 哪个网站可以做公务员题湖北网站seo
  • 网上做网站的域名注册查询网站
  • 重庆seo网站设计网站seo整站优化
  • 武汉科技职业学院技能高考分数线抖音seo软件工具
  • 备案 网站名称seo站内优化技巧
  • 网站开发都用什么软件软文发布平台媒体
  • 网站怎么做网站收录免费聊天软件
  • 什么网站做调查能赚钱收录
  • 网站建设肆金手指排名4现在的seo1发布页在哪里
  • 做虚拟币网站需要什么手续百度主页
  • 网站建设找d云世家搜什么关键词你都懂的