在Java单元测试领域,JUNIT一直各位开发人员和测试人员的最佳选择,它不仅提供了很多标准的API,同时很多IDE也对它提供了运行环境支持。特别是JUNIT4以后,引入了Java annotation的方式,进一步规范了测试脚本的结构,使测试脚本在原有的框架下更加灵活。
DBUNIT是一款基于JAVA的数据库维护工具,让在单元测试中使数据库中的数据维护透明化成为可能。
UNITILS是一款单元测试的维护工具,它可以把单元测试中用到到的资源采用JAVA ANNOTATION的方式统一管理起来,最大限度的减少测试脚本中硬编码的数量,降低编写测试脚本的难度。
我们在经过一段时间的实践以后,把这三个工具有机的结合起来,以JUNIT为整个测试的基础框架,采用DBUNIT为自动管理数据库的工具,以EXCEL为数据载体通过POI加载数据,最后通过UNITILS的ANNOTATION机制把整个数据以及EXCEL的IO过程透明化,同时也可以把SPRING容器中已经初始化好的BEAN透明地取出,仅仅把各种annotation的接口暴露给脚本开发者,使脚本开发者采用一个annotation符号就可以完成加载删除数据、初始化spring bean等硬编码中几行甚者是几行代码的工作。
整个单元测试的运行机理如下图所示:
由于官方版本的Unitils是不支持访问呢EXCEL的,因此需要编写插件调用DBUNIT中API使其支持EXCLE格式数据,另外如果远程数据库中需要用到的表无主键,DBUNIT会抛出无法找到主键的一场,这无法适应现实数据库的需要,因此需要修改DBUNIT的源码,使其支持在本地文件设置虚拟主键,这样就使整个数据准备策略觉有很大的灵活性,DBUNIT访问数据库方式如下图所示:
这就是整个单元测试框架,在加上现有的持续集成技术,就形成了一个相对完整的一个可持续集成的单元测试体系。
当然其中还有很多是我们需要改进的地方,比如:数据验证技术过于依赖与硬编码;UNITILS无法支持多库数据操作等等,但是我始终相信,技术无止境,只要我们保持足够的信心和激情,我们的可持续集成的单元测试体系不仅会为公司做出更大贡献,更可以成为业界一颗璀璨的明星。
分享到:
相关推荐
这里提到的四个文件是Java开发中常用的单元测试框架和库,分别是JUnit、DBUnit、Unitils和Mockito。让我们逐一深入探讨它们的功能和使用方法。 **JUnit** 是Java领域中最广泛使用的单元测试框架,这里的`junit-4.11...
该框架基于DbUnit和EasyMock,并与JUnit和TestNG兼容,提供了对数据库测试、Mock对象管理和Spring集成的支持。 在数据库测试方面,Unitils能够自动维护和关闭单元测试数据库,支持多种数据库平台如Oracle、Hsqldb、...
Unitils可以与其他测试框架如JUnit、TestNG集成,帮助开发者创建更复杂的测试场景,例如模拟服务层、事务管理和依赖注入。 7. **最佳实践**: - 使用事务边界确保测试的隔离性,每个测试结束后回滚所有变更,保持...
在本示例工程中,我们将会探讨 Unitils 如何与 DBUnit 和 EasyMock 集成,以实现高效的单元测试。 1. **Unitils 框架** Unitils 是一个开源的测试框架,旨在通过自动化常见的测试任务来提高测试效率。它支持 JUnit...
Unitils 测试框架目的是让单元测试变得更加容易和可维护。Unitils 构建在DbUnit 与 EasyMock 项目之上并与JUnit 和TestNG 相结合。支持数据库测试,支持利用Mock 对象 进行测试并提供与Spring 和Hibernate 相集成。...
Unitils是一个流行的Java开发框架,专注于自动化单元测试和集成测试。这个压缩包包含了运行和使用Unitils所需的所有组件,使得开发者无需单独下载和管理各个依赖。 Unitils框架的核心特点包括: 1. **数据库支持**...
Unitils构建在DBUnit与EasyMock项目之上并与JUnit和TestNG相结合,支持数据库测试,支持利用mock对象进行测试并提供与Spring和Hibernate相集成。Unitils设计成以一种高度可配置和松散偶合的框架来添加这些服务到单元...
DbUnit 是一个用于数据库单元测试的框架,特别适合用于接口测试中的数据校验。它可以轻松地设置和清理测试数据库的状态,确保每次测试都在相同的数据环境中运行。 ##### 5.3 Spring TestContext Framework Spring ...
16.7.1 对LoginController进行单元测试 16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体...
16.7.1 对LoginController进行单元测试 16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体...
在执行所有测试之前,需要一次创建DbUnit的 ,或者 每次执行所有测试都需要一次建立数据库,或者 您只需要在@BeforeClass中使用它,没有此侦听器就无法获取它 是的,您可以拍打另一层抽象,例如Unitils,但这是......