文档章节

单元测试——持久层单元测试

李阳-kevin
 李阳-kevin
发布于 2017/09/07 17:48
字数 320
阅读 23
收藏 0
点赞 0
评论 0

主要依赖:

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-test-autoconfigure</artifactId>

<version>1.4.5.RELEASE</version>

</dependency>

 

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<scope>test</scope>

<version>1.4.194</version>

</dependency>

 

<dependency>

<groupId>org.assertj</groupId>

<artifactId>assertj-core</artifactId>

<version>2.5.0</version>

</dependency>

 

在spring-boot项目中只需要如下依赖:

 

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<scope>test</scope>

<version>1.4.194</version>

</dependency>

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

</dependency>

 

 

主要代码:

import com.demo.constants.types.DeleteStatus;
import com.demo.domain.entity.DemoEntity;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.UUID;

import static org.springframework.boot.autoconfigure.jdbc.EmbeddedDatabaseConnection.H2;

/**
 * Author: liyang
 * Date: 03/09/2017 10:59 PM
 * Version: 1.0
 * Desc: repository层测试demo,使用内存数据库 h2 进行测试,不会产生脏数据而影响原始库。
 * 推荐使用这种方式进行 repository 测试。
 */
@RunWith(SpringRunner.class)
// 使用 spring-boot-test 提供的jpa测试框架
@DataJpaTest
// 使用 spring-boot-test 提供的默认内存数据库 h2,不需要pom配置自己配置提供的 h2数据库
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE, connection = H2)
public class DemoRepositoryTest {

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private DemoRepository demoRepository;

    @Test
    public void findDemoByName() throws Exception {
        // parameters
        String name = UUID.randomUUID().toString();

        // 模拟数据
        DemoEntity demoEntity = new DemoEntity(name);
        entityManager.persist(demoEntity);
        entityManager.flush();

        // 调用服务
        DemoEntity demo = demoRepository.findDemoByName(name);

        // 断言
        Assert.assertTrue(demo.getName().equals(name));
    }
}

被测试方法:

DemoEntity findDemoByName(String name);

配置文件中不需要配置任何跟数据库有关的信息,jpa、hibernate等等都不需要配置。

© 著作权归作者所有

共有 人打赏支持
李阳-kevin
粉丝 3
博文 79
码字总数 35426
作品 0
西安
程序员
学习自动化测试的一些感悟

这个话题比较大,相信大家也都有自己的想法,我在这里写一些我自己的看法,请大家指教。 1、什么叫做自动化测试工程师? 首先,要会使用自动化测试工具; 接下来,对于高手来说,要能写一些独...

白一客 ⋅ 2017/05/25 ⋅ 0

基于 Node.js—Express 框架的博客--LittleBlog

这是一个基于 Node.js——Express 框架的个人博客。支持解析 MarkDown 并生成静态 HTML。 系统架构 特性 博客前后端分离,系统构架实现了层次化、组件化。 前端 前端通过Vue+Vuex,实现了组件...

杜小豆 ⋅ 2016/12/05 ⋅ 3

史上最简单的 MyBatis 教程(一)

1 简介 MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,其几乎消除了所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始...

qq_35246620 ⋅ 2017/02/02 ⋅ 0

单元测试框架进行自动化测试

到底单元测试是做什么用的?单元测试是一种测试,它不是代码的一部分;单元测试是最低层级的测试,它只保证函数的可靠性,不保证其它;单元测试应该能保证每一个函数的可靠性。 单元测试是一...

fiawfo ⋅ 2016/12/14 ⋅ 0

在.NET下多层架构企业管理系统的开发

摘 要 随着.NET 2.0的发布,在.NET下用多层架构来构建企业管理系统也越来越方便。本文以某国外贸易公司的管理系统为背景,介绍在.NET平台下,采用多层架构构建企业管理系统。 关键词 .NET;单...

青石 ⋅ 2012/02/07 ⋅ 0

从自动化测试到持续部署,你需要了解这些

在互联网的产品开发时代,产品迭代越来越频繁,“从功能开发完成直到成功部署”这一阶段被称为软件开发“最后一公里”。很多开发团队也越来越认识到,自动化测试和持续部署可帮助开发团队提高...

风起云飞fir_im ⋅ 2016/06/08 ⋅ 0

使用Kotlin构建更适合Android的MVVM应用程序

概述 说到MVVM,大家都会想起前端的MVVM框架,相较于前端MVVM的火热,它在移动开发领域就不那么热门了。Google在2015年才推出DataBinding框架,起步较晚,而且2015年是MVP模式爆发的一年,2...

ditclear ⋅ 2017/11/28 ⋅ 0

浅谈iOS单元测试

什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数...

xinxinitblog ⋅ 2016/04/30 ⋅ 0

测试你的前端代码 - part1(介绍篇)

本文作者:Gil Tayar 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58d3dcb87413fc2e8240855a 英文连接:Testing Your Frontend Code : Part I (Introduction......

胡子大哈 ⋅ 2017/03/23 ⋅ 0

一个SpringData JPA入门实例

1.介绍 这是SpringData JPA的文档,是了解SpringData最好的资料了。 http://docs.spring.io/spring-data/jpa/docs/current/reference/html/ 2.入门实例 2.1 创建项目 2.1.1 maven依赖 下面是...

蜡笔小小小新 ⋅ 2016/07/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

两道面试题,带你解析Java类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa{ static { System.out.println("爷爷在静态代码块"); }} cl...

1527 ⋅ 18分钟前 ⋅ 0

SpringCloud(Data Flow)

dataflow-server

赵-猛 ⋅ 28分钟前 ⋅ 0

深入理解Java虚拟机

这本书我读到第8章,之后就是在读不下去了。 读到后面是一种痛苦的体验,太多的东西是不全面的,大量的专有名词是没有解释的,读到最后很多东西仅仅是一个侧面,所以我觉得,这本书不适合初学...

颖伙虫 ⋅ 33分钟前 ⋅ 0

B树和B+树的总结

B树 为什么要B树 磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的...

浮躁的码农 ⋅ 36分钟前 ⋅ 0

NanoPi NEO core/ Ubuntu16.04单网卡配置3个IP地址(2个静态,1个动态)

配置 root@NanoPi-NEO-Core:/etc/network# cat interfacesauto loiface lo inet loopbackallow-hotplug eth0iface eth0 inet static address 172.31.188.249 netmask 255.......

SamXIAO ⋅ 今天 ⋅ 0

三步为你的App集成LivePhoto功能

摘要:LivePhoto是iOS9新推出的一种拍照方式,类似于拍摄Gif图或录制视频片段生成图片。如果没有画面感,可以联想《哈利波特》霍格沃茨城堡的壁画,哈哈,很炫酷有木有,但坑爹的是只有iphone6S以...

壹峰 ⋅ 今天 ⋅ 0

centos7 git安装

由于centos中的源仓库中git不是最新版本,需要进行源码安装。 1、查看yum仓库git信息 [root@iZm5e3d4r5i5ml889vh6esZ zh]# yum info gitLoaded plugins: fastestmirrorLoading mirror s...

xixingzhe ⋅ 今天 ⋅ 0

input file 重复上传同一张图片失效的解决办法

解决办法 方法一:来回切换input[type='file']的type属性值,可以是‘text’,'button','button'....,然后再切换回来‘file’ 方法二:每次取消图片预览后,重置input[type='file']的value的...

时刻在奔跑 ⋅ 今天 ⋅ 0

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口;困难是因为我们不了解算法细节,很难去根...

xiaomin0322 ⋅ 今天 ⋅ 0

WampServer默认web服务器根目录位置

安装WampServer之后的web服务器根目录默认位置在WampServer安装目录下的www:

临江仙卜算子 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部