Java 使用dao创建和获取id的junit测试

Java 使用dao创建和获取id的junit测试,java,unit-testing,junit,dao,data-access-object,Java,Unit Testing,Junit,Dao,Data Access Object,我需要为以下服务创建单元测试: SomeObject obj = new SomeObject(); String objConfig = "<root id=%id% param1="something">....</root>" obj.setField1("value1"); obj.setField2("value2"); someObje

我需要为以下服务创建单元测试:

            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);
someobjectobj=newsomeobject();
字符串objConfig=“…”
对象设置字段1(“值1”);
对象setField2(“值2”);
someObjectDao.create(obj);
Long objId=obj.getId();
obj.setConfig(objConfig.replace(“%id%”,objId.toString());
someObjectDao.update(obj);

现在的问题是,在实际情况中,DAO create将在对象上分配ID,但是如何通过单元测试设置对象ID?

您可以通过两种方式来实现这一点(如果您使用的是JUnit 4):

  • 使用实际DAO并将测试类标记为@Transactional和@Rollback。每个测试方法都将在单独的事务中打开,记录将插入数据库并像在实际系统中一样进行处理,但在方法退出后将发生回滚

  • 使用一些模拟框架,例如mockito,someObjectDao的mock create()方法,根据需要设置id