【发布时间】:2015-01-18 23:22:42
【问题描述】:
我正在开发一个多层和多模块的网络项目。对于持久层,我使用 JPA 2.1 和 Hibernate 4.2 以及测试 JUnit 4。 在这个架构中,我的项目分为以下几类:
GenericDAO (interface);
GenericDAOImpl (implementation);
EntityDAOImpl (inherits from GenericDAOImpl);
GenericService (interface);
GenericServiceImpl (implementation);
EntityServiceImpl (inherits from GenericServiceImpl);
Entity (POJO).
实体可以是任何对象:用户、帐户、城市、国家...
自然地,这些实体之间存在依赖关系,并映射一对一、一对多、多对一和多对多。 我想测试这些实体及其关系是否在数据库中正确持久化。
我开始使用 spring 提供的内存数据库 (HSQLDB) 开发测试。我创建了一个通用类测试 GenericServiceTest,它测试我的类方法 GenericServicesImpl 并针对每个特定实体进行扩展,例如 EntityServiceTest。
然后,当您运行测试类 EntityServiceTest 时,位于 GenericServiceTest 类中的所有 JUnit 方法和注释都将被继承,并执行对该特定实体的测试。
为了模拟我使用夹具对象(假对象)的对象。但是,正是由于这种关系,我正在做大量工作来测试实体之间的持久性。诸如:在保存对象之前必须从数据库中恢复的非空属性(字段)取决于他。
我的疑问是:
- 有没有更好的方法来测试这种关系的持久性?
- 以这种方式测试服务层是否普遍?
- 我能说这种测试是集成测试吗,一旦我在测试服务层和持久层之间的集成?
感谢您的帮助!
【问题讨论】:
标签: java hibernate jpa testing integration-testing