单元测试与数据库

这篇具有很好参考价值的文章主要介绍了单元测试与数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单元测试

1.单元测试应该是全自动执行的,而非交互式的,应使用assert语句来验证结果而不是sout后进行人眼验证

2.为了保证单元测试可靠且便于维护,单元测试用例之间不能互相调用

3.单元测试是可重复执行的,不能受到外界环境的影响

4.单元测试代买必须写在src/test/java的工程目录下,这样在源码构建时会跳过此目录,单元测试框架则会默认扫描该目录

5.对于数据库相关的查询,更新,删除等操作,不能假设数据库里的数据是存在的,或者直接操作数据库把数据插入进去,应使用程序插入或者导入数据的方式来准备数据

6.与数据库相关的单元测试,可以设定自动回滚机制,不给数据库造成脏数据

MySQL数据库

建表

1.表达是与否概念的字段,必须使用is_xxx的方式命名,且1代表是,0代表有

2.表名,字段名,必须使用小写字母或数字,数字不能开头,精致两个下划线中间只有数字

3.表名不使用复数名词

4.不能使用MySQL官方的保留字

5.主键索引名为pk_字段名,位移所有名为uk_字段名,普通索引名为idx_字段名

6.小数类型为decimal,不能使用float和double

7.varchar是可变字符串,不预先分配存储空间,长度不能超过5000,如果储存长度大于此值,应定义字段类型为text,独立出来一张表,用主键去对应它

8.表中必须有三个字段,id,gmt_create,gmt_modified

单元测试与数据库

9.表的最好命名是业务名称_表的作用

单元测试与数据库 

10.库名与应用名保持一致.

11.字段允许冗余,但必须遵循不是频繁修改的字段,不是varchar超长的字段,也不能是text字段

索引

1.业务中具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引

2.超过三个表禁止join,join的字段必须要有索引

3.在varchar字段建立索引时,必须指定索引长度,没必要对全字段建立索引,可以采用count(distinct left(列名,索引长度))/count(*)的方式来确定此长度

4.页面搜索禁止左模糊或全模糊

5.order by的场景,注意索引的有序性,order by最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况

单元测试与数据库

6.利用覆盖索引来进行查询操作,避免回表

7.explain的结果至少达到range级别,要求是ref级别

8.建组合索引的时候,区分度最高的在最左边

9.防止因字段不同造成的隐式转换,导致索引失效

sql

1.不要使用count(类名)来替代count(*),count(*)会统计NULL的行,count(列名)则不会 

2.count(distinct col)计算除NULL之外的不重复行数

3.当某一列值全为NULL,count(col)的返回结果为0,但sum(col)的返回结果为NULL

4.使用ISNULL()来判断是否为NULL值,这是由于NULL与任何值的比较都是NULL而不会返回true或false

5.在代码中写分页查询逻辑时,若count为0,应直接返回,避免执行后面的分页语句

6.不能使用外键与级联,一切外键的概念在应用层解决

单元测试与数据库

 7.数据订正的时候需要线select,再进行删除或修改

 8.in操作能避免就避免,如果避免不了,控制in后的集合元素数量在1000个之内

ORM

1.不要使用*作为查询的字段列表

2.POJO类的布尔属性不能加is,而数据库字段必须加is_,要求在resultMap中进行字段与属性之间的映射

3.不要用resultCLass作为返回参数,即使所有类属性名与数据库字段一一对应,也需要定义

4.SQL.xml配置参数时使用#{},#param#,不要使用${},会产生sql注入问题

5.不允许直接使用HashMap与Hashtable作为查询结果集的输出

6.更新数据表记录的时候,必须同时更新记录对应的gmt_modified字段值作为当前时间

7.不要写一个大而全的数据更新接口,执行SQL时不要更新没有被改动的字段

8.<isEqual>中的compareValue是与属性值对比的常量,一般是数字,<isNotEmpty>表示不为空且不为null的时候执行,<isNotNull>表示不为null值的时候执行文章来源地址https://www.toymoban.com/news/detail-479461.html

到了这里,关于单元测试与数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单元测试与数据库

    1.单元测试应该是全自动执行的,而非交互式的,应使用assert语句来验证结果而不是sout后进行人眼验证 2.为了保证单元测试可靠且便于维护,单元测试用例之间不能互相调用 3.单元测试是可重复执行的,不能受到外界环境的影响 4.单元测试代买必须写在src/test/java的工程目录下,这样

    2024年02月08日
    浏览(38)
  • mock写单元测试和查数据库的单元测试

    一:mock方式 在测试类上添加注解 将需要测试的类bean添加进来,该类中的其他bean也添加进来 给被测试类中用到的参数、返回值类创建对象 创建BeforeEach和AfterEach方法,在BeforeEach方法中给参数,返回值设置值 然后在test方法中设置被测试的方法 二:可以检测dao层sql的单元测试

    2024年02月15日
    浏览(56)
  • Go 单元测试之Mysql数据库集成测试

    目录 一、 sqlmock介绍 二、安装 三、基本用法 四、一个小案例 五、Gorm 初始化注意点 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作,并且可以验证 SQL 语句的执行情况,非常适合用于单元测试中。 使用 sqlmock 进行 MySQL 数据库集成测试

    2024年04月17日
    浏览(42)
  • 使用MyBatis操作数据库及单元测试

    目录 一.MyBatis介绍 二.MyBatis操作数据库步骤 三.单元测试 idea上生成测试  配置mybatis日志 动态参数 MyBatis是⼀款优秀的持久层框架,⽤于简化JDBC的开发。 JDBC来操作数据库太复杂了,使用MyBatis 是因为它可以帮助我们更⽅便、更快速的操作数据库。 1. 创建springboot工程, 并导入

    2024年02月03日
    浏览(52)
  • 第三单元测试(数据库安全及设计)

    一. 单选题(共46 题,72.5分) 1. (单选题,1.5分)“死锁”是一直___D___。 A. 系统故障 B. 介质故障 C. 磁盘故障 D. 事务故障 2. (单选题,1.5分)事务的原子性是指___D____。 A. 事务一旦提交,对数据库的改变是永久的 B. 一个事务内部的操作及使用的数据对并发的其他事务是隔离的 C. 事务

    2024年02月04日
    浏览(50)
  • java 单元测试创建到测试(直接连接数据库方法)

    一.JUnit5常用注解 @Before注解用于在测试方法执行之前执行一次,可以用来设置测试环境、准备数据等。 @After注解用于在测试方法执行之后执行一次,可以用来清理测试环境、处理异常等。 @Test 表示方法是测试方法。他的职责非常单一不能生命任何属性,拓展的测试将会有

    2024年02月06日
    浏览(47)
  • java单元测试(二)H2数据库篇

    H2 数据库是一个用 Java 开发的嵌入式(内存级别)数据库,它本身只是一个类库,也就是只有一个 jar 文件,可以直接嵌入到项目中。 H2数据库又被称为内存数据库,因为它支持在内存中创建数据库。 为什么测试数据库CRUD 对于Spring项目,特别是测试Service层或者dao层的代码时。需要验

    2024年02月06日
    浏览(48)
  • Python 实战之ChatGPT + Python 实现全自动数据处理/可视化详解

    一、引言 二、成果演示——口述式数据可视化 三、远原理述 四、实现过程   (一)环境配置   (二)申请OpenAI账号   (一)调用ChatGPT API   (二)设计AI身份,全自动处理数据 五、再谈此次探索 六、总结 OpenAI 公司开发的 ChatGPT 已经火了一年多了,这期间各种 AI 产品以

    2024年02月10日
    浏览(53)
  • 大麦抢票脚本全自动化

    代码中首先进行改造,基于autojs实现安卓端自动抢购,简单来说就是在代码中填写好场次、票价、观影人等信息后,停留在抢购页面,出现立即抢购按︾便会执行自动化点击,直到处于待付款状态才停止。   可以自动检测最新版本图片滑块,并滑动。 更新不自动点抢票按钮

    2024年02月04日
    浏览(46)
  • 全自动模拟量采集软件框架详解

    Monitor.Analog采用一种MVVM架构模式,用于将用户界面(View)与业务逻辑(Model)进行分离,并通过ViewModel来进行连接和交互。以下是MVVM框架的介绍: 模拟量采集/老化房采集软件 1. Model(模型):模型代表应用程序的业务逻辑和数据。它包含数据模型、数据访问、业务规则等。

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包