使用 dao 创建并获取 id 的 junit 测试
Posted
技术标签:
【中文标题】使用 dao 创建并获取 id 的 junit 测试【英文标题】:junit test with dao create and get id 【发布时间】:2016-10-31 18:54:35 【问题描述】:我有这项服务需要为其创建单元测试:
SomeObject obj = new SomeObject();
String objConfig = "<root id=%id% param1="something">....</root>"
obj.setField1("value1");
obj.setField2("value2");
someObjectDao.create(obj);
Long objId = obj.getId();
obj.setConfig(objConfig.replace("%id%", objId.toString()));
someObjectDao.update(obj);
现在的问题是,在实际情况下,DAO 创建会为对象分配 ID,但是如何通过单元测试设置对象 ID?
【问题讨论】:
【参考方案1】:您可以通过两种方式执行此操作(如果您使用的是 JUnit 4):
使用真正的 DAO 并将测试类标记为 @Transactional 和 @Rollback。每个测试方法都会在单独的事务中打开,记录会被插入数据库并像在实际系统中一样处理,但是在方法退出后会发生回滚。
使用一些模拟框架,即mockito,模拟someObjectDao的create()方法,随意设置id。
【讨论】:
以上是关于使用 dao 创建并获取 id 的 junit 测试的主要内容,如果未能解决你的问题,请参考以下文章
如何编写单元测试 (JUnit) 以使用 DAO 类检查数据库连接?