Hibernate 域类的自动测试(非单元测试)
当前问题 请参阅相关帖子: 在我的新J2EE项目中,我正在尝试测试(不一定是单元测试)我已经开始编写的域对象。它们不涉及太多的业务逻辑(业务逻辑是DAO对象之上的业务服务的一部分),通过测试,我基本上确保了域对象的完整性,我尝试通过测试DAO方法来做到这一点。请注意,我无法使用JUnit等测试域对象,因为在我的示例中,它们没有任何方法,并且具有属性和hibernate映射注释Hibernate 域类的自动测试(非单元测试),hibernate,unit-testing,Hibernate,Unit Testing,当前问题 请参阅相关帖子: 在我的新J2EE项目中,我正在尝试测试(不一定是单元测试)我已经开始编写的域对象。它们不涉及太多的业务逻辑(业务逻辑是DAO对象之上的业务服务的一部分),通过测试,我基本上确保了域对象的完整性,我尝试通过测试DAO方法来做到这一点。请注意,我无法使用JUnit等测试域对象,因为在我的示例中,它们没有任何方法,并且具有属性和hibernate映射注释 例如,让我考虑病人域对象。在本例中,PatientDAO正在处理Patient域对象的CRUD操作。下面是一些方法(不完
例如,让我考虑病人域对象。在本例中,PatientDAO正在处理Patient域对象的CRUD操作。下面是一些方法(不完整,打算稍后添加更多的方法来测试边界条件)
注意:我不是把它们称为单元测试用例,它们可能是小型集成测试等。我很高兴这种方法可以在测试域对象时起作用 PatientDAOTest类包含: -testCreatePatient(); -testUpdatePatient(); -testFindPatient(); -testdelete患者() PatientDAO类包含: -createPatient(); -updatePatient(); -findPatient(); -删除患者()让我们考虑在域对象中测试UpDATEMETHODE()的TeStudiDePATIAN()方法。现在,我将如何实现testUpdatePatient()方法?我的想法是: 1.使用“findPatient()”域方法获取现有患者 2.使用新的详细信息更新病历 3.使用“updatePatient()”域方法将其保存回数据库 4.使用“findPatient()”域方法从数据库检索病历 5.为更新的数据断言
问题 正如您所看到的,我在测试中使用了数据库,对此我很满意,但是这种方法有什么问题吗 关于这种方法,我真正的问题是什么 在测试'updatePatient()'时,我需要使用'findPatient()'方法(实际上是2次)。这就是我不喜欢的,在测试一个方法时我必须使用另一个方法,而另一个方法本身可能有缺陷。当我尝试测试其他CRUD方法时,同样的故事也会重复 或者,我可以编写select sql查询,从数据库中获取病历,以便从测试方法中进行断言(在触发更新后),但它完全违背了使用hibernate的目的(以减少sql编码工作量),因此,我不喜欢这种方法 我的问题是,通常依赖其他方法来测试特定的方法,这是一种不错的方法吗?如果这是错误的,我应该如何在我的域对象中测试ORM映射呢感谢您的评论和对如此冗长的帖子表示歉意。根据我的经验,您主要关注的问题的答案很简单,但这里还有几个其他概念性问题