Unitils集成DbUnit,数据库配置。
unitils.properties
unitils.modules=database,dbunit,hibernate,spring,
#unitils.module.dbunit.className=sample.unitils.module.CustomExtModule
#database
database.driverClassName=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/ams
database.dialect = mysql
database.userName=root
database.password=123
database.schemaNames=ams
# The database maintainer is disabled by default.
updateDataBaseSchema.enabled=true
#This table is by default not created automatically
dbMaintainer.autoCreateExecutedScriptsTable=true
dbMaintainer.script.locations=E:/workspace_ams_1/ams/resources/dbscripts
dbMaintainer.script.fileExtensions=sql
DbUnitModule.DataSet.factory.default=com.unitils.dataset.excel.MultiSchemaXlsDataSetFactory
DbUnitModule.ExpectedDataSet.factory.default=com.unitils.dataset.excel.MultiSchemaXlsDataSetFactory
#DbUnitModule.DataSet.loadStrategy.default=org.unitils.dbunit.datasetloadstrategy.impl.CleanInsertLoadStrategy
DatabaseModule.Transactional.value.default=commit
# XSD generator
dataSetStructureGenerator.xsd.dirName=resources/xsd
dbMaintainer.generateDataSetStructure.enabled=true
sequenceUpdater.sequencevalue.lowestacceptable=100
测试用例基类UnitilsTest.java
package com.xxxx.ams.base;
import org.springframework.context.ApplicationContext;
import org.unitils.UnitilsJUnit4;
import org.unitils.spring.annotation.SpringApplicationContext;
@SpringApplicationContext({"spring-context.xml"})
public class UnitilsTest extends UnitilsJUnit4 {
@SpringApplicationContext
protected ApplicationContext applicationContext;
}
测试Service类
package com.xxxx.ams.service;
import java.util.Date;
import javax.annotation.Resource;
import static org.junit.Assert.*;
import org.apache.commons.codec.digest.DigestUtils;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.xxxx.ams.base.BaseTestCase;
import com.xxxx.ams.entity.User;
import com.xxxx.ams.service.UserService;
/**
* 测试用户操作
* 1、创建用户
* 2、修改用户信息
* 3、根据邮箱查找用户
* 4、检查邮箱是否存在
* 5、删除用户
*
*/
public class UserServiceTest extends BaseTestCase{
@Resource
private UserService userService;
@Before
public void init(){
}
@Test
public void testSaveUser(){
if(!userService.isExistByEmail("test@test.com")){
User user = new User();
user.setPassword("123456");
String passwordMd5 = DigestUtils.md5Hex(user.getPassword());
user.setPassword(passwordMd5);
user.setCreateDate(new Date());
user.setEmail("test@test.com");
user.setIsAccountEnabled(true);
user.setIsAccountExpired(false);
user.setIsAccountLocked(false);
user.setIsCredentialsExpired(false);
user.setName("xxxx");
user.setUsername("xxxx");
userService.save(user);
}
}
@Test
public void testUpdateUser(){
User po = userService.getUserByEmail("test@test.com");
Assert.assertNotNull(po);
po.setName("aaaa");
userService.update(po);
User po2 = userService.getUserByEmail("test@test.com");
assertEquals("aaaa", po2.getName());
}
@Test
public void testGetUserByEmail() {
User user = userService.getUserByEmail("test@test.com");
Assert.assertNotNull(user);
}
@Test
public void testCheckUserEmailExsit() {
boolean flag = userService.isExistByEmail("test@test.com");
Assert.assertTrue(flag);
}
@Test
public void testDeleteUser()
{
User po = userService.getUserByEmail("test@test.com");
userService.delete(po);
boolean flag = userService.isExistByEmail("test@test.com");
assertEquals(false, flag);
}
@After
public void destroy(){
}
}
测试Dao层
创建Excel文件,用于数据验证。(ams_user.xls , ams_user.expected.xls)
package com.xxxx.ams.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.List;
import org.junit.Test;
import org.unitils.dbunit.annotation.DataSet;
import org.unitils.dbunit.annotation.ExpectedDataSet;
import org.unitils.spring.annotation.SpringBeanByType;
import com.unitils.dataset.util.XlsDataSetBeanFactory;
import com.xxxx.ams.base.UnitilsTest;
import com.xxxx.ams.entity.User;
public class UserDaoTest extends UnitilsTest {
@SpringBeanByType
private UserDao userDao;
@Test
@DataSet("ams_user.xls")
// 准备数据
public void findUserByEmail() {
User user = userDao.getUserByEmail("xxxx-2@xxxx.com");
assertNull("不存在邮箱为xxxx-1@xxxx.com的用户!", user);
user = userDao.getUserByEmail("xxxx-1@xxxx.com");
assertNotNull("xxxx1@xxxx.com邮箱存在!", user);
assertEquals("xxxx-1", user.getUsername());
}
// 验证数据库保存的正确性
@Test
@ExpectedDataSet("ams_user.expected.xls")
// 准备验证数据
public void saveUser() throws Exception {
// 通过XlsDataSetBeanFactory数据集绑定工厂创建测试实体
User u = XlsDataSetBeanFactory.createBean("ams_user.xls", "ams_user",
User.class);
userDao.save(u); // 执行用户信息更新操作
}
// 验证数据库保存的正确性
@Test
@ExpectedDataSet("ams_user.expected.xls")
// 准备验证数据
public void saveUsers() throws Exception {
List<User> users = XlsDataSetBeanFactory.createBeans(
"ams_user.xls", "ams_user", User.class);
for (User u : users) {
userDao.save(u);
}
}
}
分享到:
相关推荐
Unitils 是一个强大的Java测试框架,它旨在简化单元测试的过程并提高测试的可维护性。该框架基于DbUnit和EasyMock,并与JUnit和TestNG兼容,提供了对数据库测试、Mock对象管理和Spring集成的支持。 在数据库测试...
标题“使用Unitils测试DAO”涉及的是在Java开发中如何利用Unitils库来高效地测试数据访问对象(DAO)层的代码。Unitils是一个强大的、易于使用的集成测试框架,它简化了诸如数据库、ORM(对象关系映射)框架如...
Unitils 是一个强大的 Java 单元测试框架,它提供了丰富的功能来简化测试过程,包括数据库集成测试、模拟对象以及依赖注入。在本示例工程中,我们将会探讨 Unitils 如何与 DBUnit 和 EasyMock 集成,以实现高效的...
Unitils 测试框架目的是让单元测试变得更加容易和可维护。Unitils 构建在DbUnit 与 EasyMock 项目之上并与JUnit 和TestNG 相结合。...Unitils 设计成以一种高度可配置和松散耦 合的方式来添加这些服务到单元测试中
Unitils 教程 - 单元测试的最佳实践 Unitils 是一个开源的测试库,它提供了一些实用的工具和方法来帮助开发者编写单元测试。本教程将向您展示如何使用 Unitils 来编写单元测试,并介绍一些常见的单元测试技术。 ...
对于Spring框架的支持,Unitils 可以自动注入Spring Bean到测试类中,无需手动创建或配置ApplicationContext。这极大地减少了测试代码的复杂性,让测试更专注于业务逻辑。它还支持Spring的AOP(面向切面编程)特性,...
描述中提到的链接没有具体内容,但通常在博客文章中,作者可能会详细解释如何配置和使用Unitils进行数据库测试,分享实际示例代码,以及解决可能遇到的问题和最佳实践。 标签“源码”和“工具”表明该博文可能涉及...
unitils整合dbunit利用excel进行单元测试 包含mock以及整合spring进行测试
为了使用这个压缩包,你需要将其中的jar文件添加到你的项目类路径中,然后按照Unitils的文档或示例代码来配置和使用测试框架。这样,你就可以充分利用Unitils提供的便利,提高测试的效率和质量。
Unitils-core-3.3的jar包
首先,需要在pom.xml文件中添加相关的依赖项,然后创建一个unitils.properties配置文件,用于配置自定义拓展模块,数据加载等相关信息。接着,使用dbunit来进行单元测试,可以使用Excel文件作为测试数据源。 六、...
例如,JUnit用于编写测试用例,DBUnit负责数据库相关的测试,Unitils提供ORM支持和进一步的测试便利,而Mockito则用来模拟复杂的依赖关系,使得测试更加独立和可控。了解和熟练使用这些工具,对于提升软件开发效率和...
Unitils设计成以一种高度可配置和松散偶合的框架来添加这些服务到单元测试中,其模块化的管理方式使Unitils更易进行扩展。1,JUnit4ClassRunner简介所有的测试方法testmethod都是在Runner下执行的,可以将Runner理解...
在IT行业中,资源配准是软件开发过程中的一个重要环节,主要涉及到系统资源配置、数据库管理和自动化测试等方面。在“改资源配准测试”这个主题中,我们重点探讨的是如何利用unitils和dbUtils这两个工具进行有效的...
- **成本效益**:随着系统复杂度的增加,传统的测试方法成本显著上升,而接口测试可以提供更为高效且低成本的解决方案。 - **用户视角**:接口测试是从用户的角度出发,对系统接口进行全面、高效和持续的检测,确保...
标题 "spock-unitils-0.7-groovy-2.0.zip" 暗示这是一个软件库,可能是一个测试框架或工具,结合了Spock、Unitils和Groovy技术。Spock是一个基于JVM的BDD(行为驱动开发)框架,主要针对Groovy和Java语言,提供了一...
Unitils(Unit测试实用工具)是一个开源的Java库,旨在提供一套测试准则以及一套便捷的代码库,以帮助开发者进行更加务实的单元测试。单元测试是软件开发中一个重要的步骤,它对代码中单个单元进行测试,以确保其...