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

淮北官方网站做网站要自己租服务器

淮北官方网站,做网站要自己租服务器,软文写作500字,黑马文章目录 背景UT规范1.DAO层2.Service层2.1 方式一2.2 方式二(推荐) 3.接入Jacoco插件4.接入Jenkins 背景 UT的作用: 减少花在联调的时间提高代码质量减少bug,快速定位bug放心地修改、重构显得专业 UT规范 1.DAO层 难题&…

文章目录

    • 背景
    • UT规范
      • 1.DAO层
      • 2.Service层
        • 2.1 方式一
        • 2.2 方式二(推荐)
      • 3.接入Jacoco插件
      • 4.接入Jenkins

背景

UT的作用:

  • 减少花在联调的时间
  • 提高代码质量
  • 减少bug,快速定位bug
  • 放心地修改、重构
  • 显得专业

UT规范

1.DAO层

难题:在测试单测环境数据库的前提下,写DAO层的单元测试时,往往测试用例所依赖的数据库数据被修改或删除了,或者在一个新的环境下所依赖的数据库不存在,导致单元测试无法通过,进而构建失败。

思想:使用H2内存数据库来模拟数据库环境是一个很好的解决方案

示例

<jdbc:embedded-database id="dataSource" type="H2"><jdbc:script location="classpath:db/schema.sql" /><jdbc:script location="classpath:db/data.sql" />
</jdbc:embedded-database>

其中schema.sql存放的建表sql,data.sql存放的是数据准备sql,依赖具体业务表和数据

@Test
public void insertTest() {ActTemplateItem actTemplateItem = getActTemplateItem();long row = actTemplateItemMapperExt.insertSelective(actTemplateItem);Assert.assertEquals(1, row);
}

2.Service层

难点有几个:

  1. UT全走通全链路,但不依赖第三方库(其他服务和第三方平台)
  2. 养成测试驱动开发的好习惯
  3. 整个打包过程的性能
2.1 方式一

思想:外部依赖全部mock,只测试方式本身的业务逻辑

示例

@RunWith(MockitoJUnitRunner.class)
public class ActTemplateItemServiceTest {@InjectMocksprivate ActTemplateItemServiceImpl actTemplateItemService;@Mockprivate ActTemplateItemMapperExt actTemplateItemMapperExt;@Testpublic void listByTemplateIdTest() {ActTemplateItem actTemplateItem = ActTemplateItemBuilder.buildActTemplateItem();when(actTemplateItemMapperExt.selectByTemplateId(any())).thenReturn(Lists.newArrayList(actTemplateItem));List<ActTemplateItemDTO> result = actTemplateItemService.listByTemplateId(1L);Assert.assertEquals("34", result.get(0).getBrandPageId());}
}

优点:(1)轻量级 (2)最小单元测试

缺点:(1)无法激起开发人员写UT心情 (2)无法测试整个方式链路的情况,易忽略特殊情况

2.2 方式二(推荐)

思想:增加unittest环境(目前配置环境和test共用一套,日后可单独配置并去除无用配置),走通单元测试方式全链路,依赖的第三方库采用mock方式,自己的内部Service及Dao层依赖走真实数据库(H2内存数据库)

示例

<jdbc:embedded-database id="dataSource" type="H2"><jdbc:script location="classpath:db/schema.sql" /><jdbc:script location="classpath:db/data.sql" />
</jdbc:embedded-database>
public class ActTemplateItemServiceTest extends AbstractBaseTest {@Autowiredprivate ActTemplateItemServiceImpl actTemplateItemService;@Mockprivate ItemAdapter spyItemAdapter;@Autowiredprivate RedisService redisService;@Beforepublic void before() {MockitoAnnotations.initMocks(this);MockitoAnnotations.initMocks(spyItemAdapter);ReflectionTestUtils.setField(actTemplateItemService, "itemAdapter", spyItemAdapter);Mockito.when(spyItemAdapter.listItemFrontPrimaryCategory()).thenReturn(getCategoryList());}@Testpublic void listByTemplateIdTest() {List<ActTemplateItemDTO> result = actTemplateItemService.listByTemplateId(1L);Assert.assertEquals("https://mall.hipac.cn/ytms/page/kqfsms_h5.html", result.get(0).getBrandPageId());}@Testpublic void listItemPrimaryCategoryTest() {RedisKeyUtils.RedisKey key = RedisKeyUtils.getItemCategoryListKey();redisService.del(key.getKey());List<ItemFrontPrimaryCategoryDTO> result = actTemplateItemService.listItemPrimaryCategory();System.out.println(result);Assert.assertEquals(2, result.size());}private List<ItemFrontPrimaryCategoryDTO> getCategoryList() {List<ItemFrontPrimaryCategoryDTO> categoryList = Lists.newArrayList();ItemFrontPrimaryCategoryDTO categoryDTO1 = new ItemFrontPrimaryCategoryDTO();categoryDTO1.setPrimaryCategoryId(1L);categoryDTO1.setPrimaryCategoryName("尿不湿");categoryList.add(categoryDTO1);ItemFrontPrimaryCategoryDTO categoryDTO2 = new ItemFrontPrimaryCategoryDTO();categoryDTO2.setPrimaryCategoryId(2L);categoryDTO2.setPrimaryCategoryName("婴儿车");categoryList.add(categoryDTO2);return categoryList;}
}

优点:(1)便于发现测试方法的问题(2)刺激开发人员写单元测试的激情

缺点:(1)需要加载整个启动环境(2)当单元测试较多的时候,整个打包过程时间会变长(耗费性能点在于sql执行,日后可mock Dao层数据)

3.接入Jacoco插件

<!-- jacoco plugin -->
<plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.7.9</version><executions><execution><!--在maven的initialize阶段,将Jacoco的runtime agent作为VM的一个参数传给被测程序,用于监控JVM中的调用。--><id>default-prepare-agent</id><goals><goal>prepare-agent</goal></goals><configuration><destFile>${project.build.directory}/coverage-reports/jacoco.exec</destFile><propertyName>surefireArgLine</propertyName></configuration></execution><!--在程序的verify阶段,执行report测试的程序。文件的输入为perpare-agent阶段中设置或者默认的jacoco.exec.参数 includes和excludes可用来选定report中过滤的类。--><execution><id>default-report</id><phase>test</phase><goals><goal>report</goal></goals><configuration><dataFile>${project.build.directory}/coverage-reports/jacoco.exec</dataFile><outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory></configuration></execution></executions>
</plugin>

4.接入Jenkins

不再详情介绍。

在这里插入图片描述

http://www.yayakq.cn/news/253779/

相关文章:

  • 网站设计的专业流程阿里云腾讯云网站建设
  • 织梦网站内容替换wordpress怎么保存xml
  • 网站设计的简称免费软件制作网站模板
  • 网站开发研究资料书籍怎么建设游网站主页
  • asp网站建设 文献综述做网站必须会
  • 外贸网站建站注意事项做油漆稀料用哪个网站
  • 网站产品页排名怎么做网站开发定制公司
  • 专门做顶账房的网站dw做企业网站
  • 网上学编程的有哪些比较好的网站jquery做手机网站
  • 定制类网站建设网页开发工具的作用有多大
  • 做网站不用tomcat行吗门户地方网站 策略
  • 用c语言怎么做网站帮忙做公司网站
  • 网络网站设计培训wordpress中文站
  • 福州模板建站定制网站淄博桓台学校网站建设哪家好
  • 网站改名 seo上海公共招聘网官方网站
  • 怎么看网站用什么代码做的徐州网站建设制作工作室
  • 网站上面的头像怎么做的企业网站开发周期
  • 贵阳网站定制开发怎样推广品牌
  • 站长工具seo下载北京网站设计定制开发建设公司
  • 合肥城乡建设网站首页邢台专业网站建设报价
  • 温岭专业自适应网站建设北京最新消息今天新增病例
  • 成都营销网站建设百度站长平台电脑版
  • 设计logo网站有哪些免费修改wordpress入口地址
  • 网页做好怎么变成网站谷歌网站怎么做推广
  • 艾瑞网的网站架构京东网站建设思维导图
  • 企?I网站建站 ?V州 ??l嗯嗯嗯 嗯嗯嗯嗯嗯嗯哼哼哼哼哼哼这是什么歌英文的
  • 企业网站源码安装教程郑州网站推广公司案例
  • 铁岭免费移动网站建设建设一个网站选择的服务器
  • 网站建设 费用 入哪个科目wordpress修改mysql
  • 肇庆网站制作软件网站建设发展状况