如果您曾经尝试用Java编写数据库测试,则可能会碰到DBUnit 。 DBUnit允许您设置和拆除数据库,以便它包含可针对其编写测试的一致行。

通常,您可以通过编写一个简单的XML文档来指定要DBUnit插入的行,例如:

<?xml version="1.0" encoding="UTF-8"?>
<dataset><Person id="0" title="Mr" firstName="Dave" lastName="Smith"/><Person id="1" title="Mrs" firstName="Jane" lastName="Doe"/>
</dataset>

您还可以使用相同格式的XML文件来断言数据库包含特定的行。

DBUnit在使用内存数据库时特别有效,如果使用Spring,则设置起来非常简单。 这是一篇很好的文章,描述了如何入门。

直接使用DBUnit是可以的,但是过一会儿,很明显,有多少测试遵循相同的数据库设置模式,然后测试结果。 为了减少重复,您可以使用spring-test-dbunit项目 。 该项目托管在GitHub上,并提供了一组可以添加到您的测试方法中的新注释。 1.0.0版刚刚发布,现在可以在Maven中央存储库中使用:

<dependency><groupId>com.github.springtestdbunit</groupId><artifactId>spring-test-dbunit</artifactId><version>1.0.0</version><scope>test</scope>
</dependency>

安装后,可以在测试中使用三个新的注释: @DatabaseSetup@DatabaseTearDown@ExpectedDatabase 。 这三种都可以在测试类上使用,也可以在单独的测试方法上使用。

@DatabaseSetup@DatabaseTearDown批注用于在测试运行之前或测试完成之后将数据库置于一致状态。 您指定要用作注释值的数据集,例如:

@Test
@DatabaseSetup("sampleData.xml")
public void testFind() throws Exception {// test code
}

测试完成后, @ ExpectedDatabase批注用于验证数据库的状态。 与前面的注释一样,您必须指定要使用的数据集。

@Test
@DatabaseSetup("sampleData.xml")
@ExpectedDatabase("expectedData.xml")
public void testRemove() throws Exception {// test code
}

您可以根据验证的严格程度 ,在几种不同的模式下使用@ExpectedDatabase (有关详细信息,请参见JavaDocs )。

对于要处理的注释,您需要确保测试使用的是DbUnitTestExecutionListener。 有关完整的详细信息,请参见项目自述文件 。 如果您想了解更多信息,可以在GitHub上找到一个示例项目,并在此处获得一些入门指南 。

参考: Phil Webb博客博客中的JCG合作伙伴 Phillip Webb 使用DBUnit,Spring和Annotations进行数据库测试 。

翻译自: https://www.javacodegeeks.com/2012/04/dbunit-spring-and-annotations-for.html

用于数据库测试的DBUnit,Spring和注释相关推荐

  1. dbunit测试dao_用于数据库测试的DBUnit,Spring和注释

    dbunit测试dao 如果您曾经尝试用Java编写数据库测试,则可能会遇到DBUnit . DBUnit允许您设置和拆除数据库,以便它包含可针对其编写测试的一致行. 通常,您可以通过编写一个简单的X ...

  2. spring 定时器注释_带注释的控制器– Spring Web / Webflux和测试

    spring 定时器注释 Spring Webflux和Spring Web是两个完全不同的Web堆栈. 但是, Spring Webflux继续支持基于注释的编程模型 使用这两个堆栈定义的端点可能看 ...

  3. junit jndi_使用Spring创建用于JUnit测试的JNDI资源

    junit jndi 直到最近,我还使用静态方法来设置内存数据库(HSQLDB). 我在JUnit测试的setUp / tearDown中调用了这些方法. 当我使用Spring时,这对我来说总是有点不 ...

  4. 使用Spring创建用于JUnit测试的JNDI资源

    直到最近,我还使用静态方法来设置内存数据库(HSQLDB). 我在JUnit测试的setUp / tearDown中调用了这些方法. 当我使用Spring时,这总是让我感到不自然,并且所有内容都应在其 ...

  5. scip指令集_快讯!用于提交物品中SVHC物质信息的SCIP数据库测试版本已经开放

    原标题:快讯!用于提交物品中SVHC物质信息的SCIP数据库测试版本已经开放 2020年2月17日,ECHA公布企业可以开始测试用来提交物品中SVHC物质信息的SCIP数据库测试版,此测试版本能够使企 ...

  6. eclipse让实现类也添加上接口的注释_您的Spring框架注释指南,请注意查收

    这是关于几乎所有Spring Framework注释的简化,包括Core,Spring Cloud,Spring MVC,Spring REST和Spring Boot. 在本文中,我们将介绍Spri ...

  7. 您的Spring框架注释指南,请注意查收

    这是关于几乎所有Spring Framework注释的简化,包括Core,Spring Cloud,Spring MVC,Spring REST和Spring Boot. 在本文中,我们将介绍Spri ...

  8. junit测试spring_使用Spring JUnit规则进行参数化集成测试

    junit测试spring Spring 4.2附带了全新的JUnit规则: SpringClassRule和SpringMethodRule . 使用JUnit规则的主要优点是让开发人员摆脱Spri ...

  9. Spring @Autowired 注释

    转载自  Spring @Autowired 注释 Spring @Autowired 注释 @Autowired 注释对在哪里和如何完成自动连接提供了更多的细微的控制. @Autowired 注释可 ...

最新文章

  1. python套接字编程_Python套接字编程(1)——socket模块与套接字编程
  2. Linux学习中压缩包格式有哪些?
  3. android图片浏览远近,快图浏览编辑图片方法介绍_怎么编辑图片_3DM手游
  4. [Unity] GameFramework 学习记录 3
  5. 【ASP.NET】HTTP中的 get 和 post 请求
  6. 将本地项目上传到github详解
  7. 解读《美国国家BIM标准》– BIM能力成熟度模型 (一)
  8. iOS DevCamp Android DevCamp 课程集锦 为最喜爱的课程投票 获得CSDN社区会员专享特惠票...
  9. discuzx2.5php7.0,discuz!X2.5新浪微博登陆
  10. EasyUI多级表头设置
  11. 多媒体——音频——利用MediaRecorder录制音频
  12. Mac pro微信开发者工具无法显示登录的二维码解决方案
  13. python制作数据增长动图_手把手教你做一个python+matplotlib的炫酷的数据可视化动图...
  14. [MATLAB]河道水流量的估算问题
  15. 游戏手柄按键遥杆值检测
  16. [Jzoj] 2197. 三核苷酸
  17. 中高级iOS大厂面试宝典,进厂率80%,金三银四将是你的新起点
  18. Apple ipad发布会rtsp地址
  19. 非等级式随机森林----随机蕨分类器
  20. 如何重现难以重现的bug

热门文章

  1. POJ3904(BFS算法)
  2. 匿名内部类与Lambda表达式习题
  3. 分布式 虚拟时间和虚拟同步_分布式虚拟跟踪
  4. java ee编译器_Java EE 8 MVC:控制器的详细介绍
  5. java ee打印功能_Java EE:异步构造和功能
  6. 使用Spring Security在Spring Boot中进行缓存
  7. 使用threadlocal_何时以及如何使用ThreadLocal
  8. java开发者工具开源版_JArchitect对Java开源贡献者免费
  9. 使用Spring Boot构建RESTFul服务
  10. 最受欢迎的java技术_最受欢迎的Java环境