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

高校工会网站建设工程建设方案

高校工会网站建设,工程建设方案,网络管理系统是什么,用r做简易的网站为鼓励单元测试#xff0c;特分门别类示例各种组件的测试代码并进行解说#xff0c;供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战#xff08;一#xff09;Controller 的测试 单元测试实战#xff08;二#xff09;Service 的测试 单元测试实战特分门别类示例各种组件的测试代码并进行解说供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战一Controller 的测试 单元测试实战二Service 的测试     单元测试实战三JPA 的测试 单元测试实战四MyBatis-Plus 的测试 单元测试实战五普通类的测试 单元测试实战六其它 概述 MyBatis Plus组件表现为Mapper对象我们将不涉及IService的测试。使用MyBatis/MyBatis-Plus的项目往往有很多自写的SQL需要测试。 MyBatis Plus有专门的MyBatisPlusTest注解是苞米豆提供的功能它是有Spring上下文的使用JUnit的SpringExtension扩展类。与DataJpaTest一样它会在测试时自动将数据源替换为内存数据库的。 在本章的示例中我们将展示一种使用SQL脚本来准备测试数据的方法。 断言应主要检查数据存取行为是否符合预期。 依赖 除依赖Spring自带测试框架外还需要苞米豆的测试包以及内存数据库 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope /dependency dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdscopetest/scope /dependency dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter-test/artifactIdversion3.5.3.2/versionscopetest/scope /dependency dependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdscopetest/scope /dependency 注意mybatis-plus-boot-starter-test的3.5.2版本支持Spring Boot 23.5.3及以上支持Spring Boot 3。 示例 由于篇幅的关系本章中我们将拿出一个Mapper方法作为示例。 以下为xml实现的一个查询方法 select idselectPermissionCodesByUser resultTypejava.lang.StringSELECT p.codeFROM sys_auth_user_role urJOIN sys_auth_role_permission rp ON rp.role_idur.role_idJOIN sys_auth_permission p ON p.idrp.permission_idWHERE p.type2 AND ur.user_code#{userCode} AND ur.asset_type#{assetType} AND ur.asset_id#{assetId}if testpkOrg ! nullUNION DISTINCTSELECT p.codeFROM sys_auth_user_org uoJOIN sys_auth_role_permission rp ON rp.role_iduo.role_idJOIN sys_auth_permission p ON p.idrp.permission_idWHERE p.type2 AND uo.user_code#{userCode} AND uo.pk_org#{pkOrg}/if /select 以下为该查询的代理接口 public interface SysAuthPermissionMapper extends BaseMapperSysAuthPermission {...SetString selectPermissionCodesByUser(Param(userCode) String userCode,Param(assetType) int assetType,Param(assetId) long assetId,Param(pkOrg) String pkOrg);... } 以下是该查询方法的测试类 package com.aaa.sdk.rbac.mybatis.database.mapper;import com.baomidou.mybatisplus.test.autoconfigure.MybatisPlusTest; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.core.io.ClassPathResource; import org.springframework.jdbc.datasource.init.ScriptUtils; import org.springframework.test.context.TestPropertySource;import javax.sql.DataSource; import java.sql.Connection; import java.util.Set;import static org.assertj.core.api.Assertions.assertThat;MybatisPlusTest AutoConfigureTestDatabase(replace AutoConfigureTestDatabase.Replace.NONE) TestPropertySource(properties {spring.datasource.driver-class-nameorg.h2.Driver,spring.datasource.urljdbc:h2:mem:aaa_rbac_test;DB_CLOSE_DELAY-1;DB_CLOSE_ON_EXITFALSE;MODEMySQL;DATABASE_TO_LOWERTRUE,spring.datasource.usernamesa }) class SysAuthPermissionMapperTest {Autowiredprivate SysAuthPermissionMapper mapper;BeforeAllstatic void setupClass(Autowired DataSource dataSource) throws Exception {try (Connection conn dataSource.getConnection()) {ScriptUtils.executeSqlScript(conn, new ClassPathResource(/sql/test_schema.sql));ScriptUtils.executeSqlScript(conn, new ClassPathResource(/sql/test_data.sql));}}Testvoid testSelectPermissionCodesByUser() {SetString permissions mapper.selectPermissionCodesByUser(wangfei012, 1, 1, 0001A410000000A3I0V2);assertThat(permissions).hasSize(4);}Testvoid testSelectPermissionCodesByUser_emptyPkOrg() {SetString permissions mapper.selectPermissionCodesByUser(wangfei012, 1, 1, );assertThat(permissions).hasSize(3);}Testvoid testSelectPermissionCodesByUser_invalidUser() {SetString permissions mapper.selectPermissionCodesByUser(nobody, 1, 1, 0001A410000000A3I0V2);assertThat(permissions).hasSize(0);} } 测试类说明 第18行我们使用了MyBatisPlusTest类注解。 第19行为了H2数据库兼容MySQL语法我们关闭了数据源的自动替换选择用20-24行的代码来覆盖默认的数据源。 第28行我们将代理接口注入测试类。 31行的setupClass方法会在所有测试方法执行之前执行一次准备数据。这里我们用了Spring自带的ScriptUtils实用程序其中sql脚本是在test目录下的resources文件夹测试目录结构如下图 上图中MockApplication与测试在同一个包内用来控制Spring上下文范围以免启动真实的SpringBootApplication它的代码如下注意里面有个MapperScan用来发现当前包里的MyBatis mapper package com.aaa.sdk.rbac.mybatis.database.mapper;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication MapperScan(basePackages {com.aaa.sdk.rbac.mybatis.database.mapper}) public class MockApplication { } 以下继续测试类的说明 从第38行开始是selectPermissionCodesByUser方法的三个测试用例。 testSelectPermissionCodesByUser测试正常流程包括全部4个正常参数。按照设计和测试数据它应该取出4个结果。 testSelectPermissionCodesByUser_emptyPkOrg测试传入的pkOrg参数为空时的场景覆盖的是xml文件中if testpkOrg ! null不满足的分支。按照设计和测试数据它应该取出3个结果。 testSelectPermissionCodesByUser_invalidUser则是一个负面测试测试当传入的userCode非法时的场景它应该不返回任何结果。 与JPA的测试一样测试类中没有Mock对象因此也就不存在given - when - then三段式结构。DAO对象没有更底层的依赖因此不需注入Mock这也使得它们看上去更像是一种与数据库的集成测试。 总结 使用MybatisPlusTest。 为了兼容MySQL语法而使用AutoConfigureTestDatabase(replace AutoConfigureTestDatabase.Replace.NONE)并用TestPropertySource订制数据源属性。注意兼容只是部分兼容并非完全兼容。 使用BeforeAll方法结合Spring自带的ScriptUtils准备测试数据。 MockApplication里加MapperScan。 示例中我们没有在每个方法之前重置测试数据这是因为我们只测了查询方法吗不。在DAO的测试中不管是MyBatisPlusTest还是DataJpaTest都带有Transactional元注解它们会在测试方法执行结束后自动回滚。 MyBatis-Plus 有所谓的 Lambda Query可链式组合查询。我们不建议在Service的实现类里直接使用它应该将其封装到DAO/Repository层的方法里这样就方便mock这个封装好的方法的行为避免直接mock链式组合查询行为。如果实在要mock链式组合查询行为可以参考这篇和这篇。
http://www.sadfv.cn/news/212357/

相关文章:

  • 网站开发的目的相关书籍信息行业网站建设
  • logo图标素材网站国内重大新闻事件
  • 网站特效代码上那找好网站怎么做登录模块
  • 共享网站的建设与规划wordpress 个人资料按钮
  • 网站开发慕枫网站建设的一般步骤
  • 通信建设资质管理信息系统网站网站备案 有什么用
  • 什么是做学院网站什么是网络营销方案
  • 凡科网站建设是免费的吗威海优化推广
  • 网站未续费到期后打开会怎样个人网站可以直接做微信登陆吗
  • 自己可以学着做网站吗app推广注册从哪里接单
  • 黄州区精神文明建设网站wordpress更改文章宽度
  • wordpress网站后台要怎么登陆wordpress接入翼支付
  • 网站的信息架构学电商比较好的网站有哪些
  • 招聘网站建设策划书海南百度推广中心
  • 成都高校网站建设服务公司网络推广提成方案
  • 达人室内设计网站在深圳找工作哪个网站好
  • 网站工程师招聘长沙网标集团
  • c 教程如何做网站网络推广怎么做效果好
  • 建大型网站费用网建企业
  • 网站建设合同 模板 下载宁波网站排名优化报价
  • 网站 刷流量 SEOwordpress博客页修改
  • 重庆自助建站系统哪家好网络推广与推广
  • 三丰云做网站步骤vs做网站如何发布
  • asp网站开发教程wordpress线上安装
  • 响应式网站 移动端网站优化大师使用方法
  • 江阴网站开发公司电话广告网站建设最专业
  • 公众号网站开发用什么模板wordpress企业仿站视频教程
  • 家具东莞网站建设个人网站html模板下载
  • 电脑做系统教学网站手机在线网站建设
  • ae模板精品站WordPress的欢迎页面