dbunit java_Java – 让DbUnit使用Hibernate事务
我在尝试将Hibernate事务中的更改推送到数据库以使DbUnit在我的测试用例中正常工作时遇到问题.似乎DbUnit没有看到Hibernate所做的更改,因为它们还没有在事务结束时提交……而且我不确定如何重构我的测试用例以使其工作.
这是我过度简化的测试用例来证明我的问题: –
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:applicationContext-test.xml"
})
@TransactionConfiguration(transactionManager = "transactionManager")
@Transactional
public class SomeTest {
@Autowired
protected DataSource dataSource;
@Autowired
private SessionFactory sessionFactory;
@Test
public void testThis() throws Exception {
Session session = sessionFactory.getCurrentSession();
assertEquals("initial overlayType count",4,session.createQuery("from OverlayType").list().size());
//-----------
// Imagine this block is an API call,ex: someService.save("AAA");
// But for the sake of simplicity,I do it this way
OverlayType overlayType = new OverlayType();
overlayType.setName("AAA");
session.save(overlayType);
//-----------
// flush has no effect here
session.flush();
assertEquals("new overlayType count",5,session.createQuery("from OverlayType").list().size());
// pull the data from database using dbunit
IDatabaseConnection connection = new DatabaseConnection(dataSource.getConnection());
connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,new MysqLDataTypeFactory());
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("resultSet","select * from overlayType");
ITable actualTable = partialDataSet.getTable("resultSet");
// FAIL: Actual row count is 4 instead of 5
assertEquals("dbunit's overlayType count",actualTable.getRowCount());
DataSourceUtils.releaseConnection(connection.getConnection(),dataSource);
}
}
我使用DbUnit的全部想法是: –
>调用someService.save(…)将数据保存到多个表中.
>使用DbUnit从XML获取预期的表.
>使用DbUnit从数据库中获取实际表.
> Dosertion.assertEquals(expectedTable,actualTable);.
但是,在这一点上,我无法让DbUnit看到Hibernate在事务中所做的更改.
我应该如何改变以使DbUnit与Hibernate事务很好地协作?
谢谢.
dbunit java_Java – 让DbUnit使用Hibernate事务相关推荐
- 【大话Hibernate】hibernate事务管理
事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰. 数据库向用户提供保存当前程序状态的方法,叫事 ...
- Spring中配置Hibernate事务的四种方式
2019独角兽企业重金招聘Python工程师标准>>> 为了保证数据的一致性,在编程的时候往往需要引入事务这个概念.事务有4个特性:原子性.一致性.隔离性.持久性. 事务的种类有两种 ...
- Spring4.x(9)--Spring的Hibernate事务-XML
Spring的Hibernate事务-XML 一.拷贝必要的jar包到工程的lib目录 二.创建spring的配置文件并导入约束 <?xml version="1.0" en ...
- Hibernate事务
Hibernate事务控制 在实际生产中,每个业务逻辑都是由一系列对数据库访问完成的,这一系列的数据访问可能包括删除一些数据,然后再插入一些数据, 这里的删除和插入的动作不可分割,要么全部执行 ...
- dbunit java_java - 错误地抛出了Java DBUnit AmbiguousTableNameException - 堆栈内存溢出
我正在尝试DBUnit(2.6.0),我正在尝试导出我的完整数据库(PostgreSQL). 但是抛出以下异常: 线程"main"中的异常org.dbunit.database.A ...
- Hibernate 事务总结
2019独角兽企业重金招聘Python工程师标准>>> 一.事务的定义 1.物理上的数据库事务 2.逻辑上事务与persistence context有关 3.应用程序上的事务指的是 ...
- Spring对Hibernate事务管理
http://www.cnblogs.com/m-xy/archive/2013/05/14/3077627.html(挺好的) 还有一种用parent的配置方式,parent配置到哪个层面,事务就控 ...
- Hibernate事务管理-HibernateTransactionManager-对hibernate session的管理
由于对SSH还停留在比较初级的应用水平上,今天在遇到一个疑惑时折腾了很久,具体问题是这样的, 有这么一个测试方法, 1 public static void test1() { 2 Applicati ...
- spring 中 Hibernate 事务和JDBC事务嵌套问题
http://www.iteye.com/topic/11063?page=2 ---mixed ORM and JDBC usage is a feature of Spring DAO 这是Rod ...
最新文章
- 网络接口配置-Bonding
- 转:关于CCDISK的优化
- 3.X内核下设备树–platform设备驱动
- 【51单片机快速入门指南】8:看门狗定时器(WDT)
- vue-cli脚手架下,assets中的图片路径使用变量?
- 七种主流平面板式介绍
- 【Vue】—数组对象变更检测
- c/c++教程 - 2.1 程序的内存模型 内存四区 代码区 全局区 堆区 栈区 new操作符
- 【Linux】Ubuntu输入法不能开机自启的解决方法
- seaborn_Seaborn Kdeplot –综合指南
- 现代计算机网络发展为第几代,晶体管计算机是第几代_个人计算机使用的电子元器件_计算机网络最突出的(6)...
- API RSA签名颁发证书
- LaTeX 公式编辑器(网页版)
- 数字IC设计学习笔记_专业书单整理
- python控制手机模拟器_通过adb连接手机或者模拟器进行python开发
- 一阶线性微分方程 解法
- NLP模型(二)——GloVe介绍
- IP-guard苹果加密软件苹果系统加密Mac文档加密软件
- WINDOS服务器安全设置
- Switch开关,两边字隐藏
热门文章
- 【STM32】FreeRTOS 其他任务 API 函数
- 第6章-一阶多智体系统一致性-->6.4 切换拓扑系统一致性
- 【控制】能量函数Graph Laplacian Potential and Lyapunov Functions for Multi-Agent Systems
- P10 线性系统状态空间设计-《Matlab/Simulink与控制系统仿真》程序指令总结
- [Python] sys.argv[] 用法
- Win10 基于excel 文件的python下载脚本
- Spring基于 Annotation 的简单介绍
- directive多指令之间的异步调用
- Android用户界面开发(2):ListView
- .NET基础示例系列之二十:对图片的几种简单处理