返回顶部
首页 > 资讯 > 后端开发 > Python >java 单元测试 对h2数据库数据清理方式
  • 482
分享到

java 单元测试 对h2数据库数据清理方式

2024-04-02 19:04:59 482人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录java 单元测试 对h2数据库数据清理前因junit单元测试使用H2内存数据库首先导入H2内存数据库其次使用H2数据源模拟oracle下面来写个Junit4的单元测试类例子ja

java 单元测试 对h2数据库数据清理

前因

写测试框架的时候使用的精简测试框架不需要启动整个SpringBoot,并不支持@Transactional测试后回滚h2数据库,而是在基础测试类里声明cleandb函数供使用,这就需要适配任意表的数据清除,不过更推荐不清理,以方法名为id使数据不重复即可


try{
      JdbcTemplate jdbcTemplate = 获取DataSource结构,反射或加载Bean等都可以,不要对业务代码侵入;
      Connection connection = jdbcTemplate.getDataSource().getConnection();//获取连接
      ResultSet tables = connection.getMetaData().getTables(null, null, null, new String[]{"TABLE"});//获取表名
      connection.close();//记得关闭连接,或者使用连接池
      while(tables.next()){
        //若是测试类的测试方法超过7,java.sql.Connection无法获取连接导致死循环
        jdbcTemplate.update("DELETE FROM " + tables.getObject("TABLE_NAME"));
        //spring-test-5.2.1.RELEASE-sources.jar!\org\springframework\test\jdbc\JdbcTestUtils.deleteFromTables如果使用了springtest可以代替使用该方法
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }

junit单元测试使用H2内存数据库

首先导入H2内存数据库

Junit4单元测试依赖。


<dependency>
 <groupId>com.h2database</groupId>
 <artifactId>h2</artifactId>
 <version>1.4.185</version>
 <scope>test</scope>
</dependency>
<dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.11</version>
 <scope>test</scope>
</dependency

其次使用H2数据源模拟Oracle


@Component
@Profile("testOne") // 指定单元测试活动所匹配的数据源
public class DataSourceConfig4Test { 
    @Bean(name="dataSourceUtils") // 要和模拟的数据源名称相对应
    DataSource dataSourceUtils() throws SQLException {
        return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.H2)
                .addScript("classpath:/H2_TYPE.sql")
                .addScript("classpath:/INIT_TABLE.sql")
                .addScript("classpath:/H2_FUNCTION.sql")
                .addScript("classpath:/INIT_DATA.sql")   
                .build();
    }
}

H2_TYPE.sql (设置H2所模拟的数据库)


SET MODE Oracle;

INIT_TABLE.sql (单元测试需要的数据库表初始化)


CREATE TABLE TEST
(
    ID      NUMBER(38,0) PRIMARY KEY NOT NULL, 
    PARAM1  VARCHAR2(6) NOT NULL,
    PARAM2 VARCHAR2(6) NOT NULL,
 PARAM3 VARCHAR2(1) NOT NULL,
 PARAM4 VARCHAR2(50) NOT NULL
);

H2_FUNCTION.sql (不需要特殊方法时,此不可忽略)


CREATE ALIAS TO_DATE FOR "com.mvn.task.one.Function.toDate";

INIT_DATA.sql (初始化测试数据)


INSERT INTO TEST(ID,PARAM1,PARAM2,PARAM3,PARAM4)
VALUES(100,'TEST1','TEST2','2','JKL');

至此H2部分准备完毕

下面来写个Junit4的单元测试类例子


@ActiveProfiles("testOne") // 需要和H2模拟的数据源对应上
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:testspring/applicationContext-test-one.xml")
public class oneTest { 
 @Autowired
 private ITestService iTestService;
 @Test
 public void testBengin(){
     Test model = iSubcService.findTest("TEST1", "TEST2");
     Assert.assertNotNull(model);
 }
}

到此H2和Junit单元测试完成,另外一个数据源单元测试重复以上步骤即可~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java 单元测试 对h2数据库数据清理方式

本文链接: https://lsjlt.com/news/134705.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java 单元测试 对h2数据库数据清理方式
    目录java 单元测试 对h2数据库数据清理前因junit单元测试使用H2内存数据库首先导入H2内存数据库其次使用H2数据源模拟Oracle下面来写个Junit4的单元测试类例子ja...
    99+
    2024-04-02
  • Go单元测试对数据库CRUD进行Mock测试
    目录前言go-sqlmock安装使用示例miniredis安装使用示例总结前言 最近在实践中也总结了一些如何用表格驱动的方式使用 gock Mock测试外部接口调用。以及怎么对GOR...
    99+
    2024-04-02
  • python中的单元测试和数据库测试
    登录测试被测试的代码逻辑 @app.route('/login', methods=['POST']) def login(): username = request.form.get('username') passwor...
    99+
    2023-01-31
    单元测试 数据库 测试
  • Android之单元测试及数据库操作
      一、安卓下的单元测试   1.创建一个单元类,继承超类AndroidTestCase   2.在AndroidManifest.xml配置清单中配置以下两点   ...
    99+
    2022-06-06
    单元 数据 单元测试 测试 数据库 Android
  • JavaWeb实战之编写单元测试类测试数据库操作
    首先导入jar包 使用Mybatis generator生成,dao、entity、mappers 没有dataSource,我圈错了。。。 jdbc.properties是数据库...
    99+
    2024-04-02
  • 如何在JavaWeb中编写一个单元测试类测试数据库
    本篇文章给大家分享的是有关如何在JavaWeb中编写一个单元测试类测试数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、...
    99+
    2023-06-14
  • mysql连接数据库并测试的方式方法
    这篇文章主要介绍mysql连接数据库并测试的方式方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.通过maven导入关于mybatis的jar包可以通过阿里云的maven库直接下...
    99+
    2024-04-02
  • sysbench对数据库进行压力测试
    sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试。安装方式:https://github.com/akopytov/sysbench/blob/master/REA...
    99+
    2024-04-02
  • spring boot 测试单元修改数据库不成功的解决
    目录spring boot 测试单元修改数据库不成功springboot 数据库无法进行更改的情况之一@test迟迟无响应现象原因解决方法spring boot 测试单元修改数据库不...
    99+
    2024-04-02
  • MySQL 线上数据库清理数据的方法
    01 场景分析  今天下午,开发的同事提来一个需求,需要在线上要删除一些数据记录,简单看了看数据的分布,大概是要删除数据表中的两千七百多万条记录,数据表的总记录是两千八百多万,也就是说,要删除的记录占了总记...
    99+
    2022-05-14
    MySQL 数据库清理数据 MySQL 线上数据库清理
  • java联调生成测试数据工具类方式
    目录java联调生成测试数据工具类代码java druid工具类及测试总结java联调生成测试数据工具类 在日常的联调中,我们经常需要准备一定数量的测试数据,用来配合前端测试。 当然...
    99+
    2023-05-14
    java联调 java生成测试数据 java工具类
  • 数据库的测试方法有哪些
    这篇文章主要讲解了“数据库的测试方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库的测试方法有哪些”吧!目前,市场中有很多活跃的数据库工具,例如...
    99+
    2024-04-02
  • 如何为内存数据存储创建单元测试?
    php小编小新将为您介绍如何为内存数据存储创建单元测试。在开发过程中,单元测试是保证代码质量和功能正确性的重要手段之一。对于内存数据存储,我们可以使用PHPUnit等测试框架来编写相应...
    99+
    2024-02-09
  • Go怎么对数据库CRUD进行Mock测试
    今天小编给大家分享一下Go怎么对数据库CRUD进行Mock测试的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。go-sqlmo...
    99+
    2023-07-02
  • Java及数据库对日期进行格式化方式
    目录Java及数据库对日期进行格式化示例Java与数据库时间格式转换Java及数据库对日期进行格式化 Java对日期进行格式化可使用java.text.SimpleDateForma...
    99+
    2024-04-02
  • python读取测试数据的多种方式
    目录一、通过创建.ini或.conf文件读取二、通过yaml文件读取三、通过excel读取一、通过创建.ini或.conf文件读取 1、创建一个config.ini或者.conf文...
    99+
    2024-04-02
  • JMeter如何对MySQL数据库进行压力测试
    这篇文章将为大家详细讲解有关JMeter如何对MySQL数据库进行压力测试,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、安装并配置 JMeter下载官网下载,下载二进制的这个 zip配置环境变量然后解...
    99+
    2023-06-28
  • wordpress数据库优化和清理冗余数据的方法
    提示:清理前请先备份数据库,以防出意外。 经实践发现,只要执行依次执行下面5个语句,就可以清理的比较干净了。尤其是 wp_posts 这个表,看看这个表有多少条记录。记录数应该等于你在后台管理界面看到的文章数目+页面数目...
    99+
    2022-06-12
    wordpress 数据库优化 冗余数据
  • redis数据清理的方式有哪些
    Redis数据清理的方式包括:1. 过期键清理:Redis支持自动过期键清理,可以通过设置键的过期时间来实现数据的自动清理。2. 手...
    99+
    2023-08-20
    redis
  • 如何使用第三方库进行 Go 函数单元测试
    答案: 是,使用第三方库可以简化 go 中的单元测试。详细描述:ginkgo 是一个 bdd 框架,用于方便地编写和维护单元测试。除了 ginkgo,还有 testify、gorilla...
    99+
    2024-05-04
    单元测试 第三方库 git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作