我的应用程序使用JPA(1.2),Spring(3.1.2),Spring Data(1.1.0)和Hibernate(4.1.7)。JPA测试框架
我们需要编写用于测试Entity和Repository的Junit测试用例,但是我们无法找到适用于测试JPA所有场景的Junit和framwork的正确示例。
请让我们知道为Junit编写JPA存储库和实体的框架是否正确。
我的应用程序使用JPA(1.2),Spring(3.1.2),Spring Data(1.1.0)和Hibernate(4.1.7)。JPA测试框架
我们需要编写用于测试Entity和Repository的Junit测试用例,但是我们无法找到适用于测试JPA所有场景的Junit和framwork的正确示例。
请让我们知道为Junit编写JPA存储库和实体的框架是否正确。
我会推荐使用Spring Test框架,它使开发人员能够用测试引导依赖注入容器。然后,您可以将您的存储库自动装入测试。
这里是我已经使用了框架,摘录测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:META-INF/spring/test-context.xml"})
@TransactionConfiguration(defaultRollback=false)
public class CommentRepositoryTest {
@Autowired
private CommentRepository repository;
@Autowired
PostRepository postRepository;
@Test
public void findOneTest(){
Comment comment= repository.findOne(1);
assertNotNull(comment);
assertEquals("John Doe", comment.getAuthor());
}
}
通知的@ContextConfiguration
指向的Spring Bean配置文件如何。那是依赖注入容器被引导。 @Autowired
注释正在注入我的存储库进行测试。 @TransactionConfiguration
告诉Spring不要回滚测试,以便可以针对沙箱数据库运行单元测试,这可能会暴露回滚功能隐藏的问题。
我有一个项目,演示GitHub上的配置。
我还创建了一个视频教程,演示如何configure jUnit tests with Spring Test。
我也有一个test使用@Transactional
注释的例子。
每个测试函数都有自己的事务,所以我需要在一个函数中测试所有的东西,但这不正确。如果你有任何例子,请给我提供链接 – 2013-03-19 09:07:20
@RanuJain所以你说的测试将是'@ Transactional',也许会持续多个实体? – 2013-03-19 09:08:23
是的......我们已经用SpringJunit编写了Junit类,但它没有给出正确的结果。有些地方我们有其他实体的依赖关系,然后在测试时,一切正常,但实际上当我们试图保存它的抛出错误时。因为在测试中它实际上并没有因为@Transaction而在数据库中插入数据。 – 2013-03-19 09:12:55
你可以看看简单的POC项目中,我目前的工作:
https://github.com/ndjordjevic/dental-rec
你可以发现有一些想法如何测试JPA实体与JPA,春天,JUnit中,DbUnit的等。 ..
JPA1.2不存在。 1.0? 2.0? 2.1? – DataNucleus 2013-03-19 12:53:09