我是一名web开发人员,从事过一些Java EE开发(Richfaces、Seam2、EJB3.1、JPA)。为了测试JPA,我使用了hypersonic和Mockito。但我缺乏更深层次的EJB知识。
有些人可能会争辩说,我们应该使用OpenEJB和Arquillian,但是为了什么呢?我什么时候需要做容器相关的测试?我需要OpenEJB和Arquillian的可能的测试场景是什么?
请多多指教:)
发布于 2011-10-09 16:17:56
在这种情况下有两个方面。
您可以模拟整个环境,然后分别测试每种方法。单元测试是细粒度的,而且速度非常快。这是因为您可以在每次对代码进行一些重要更改时执行它们。如果它们更复杂、更耗时,开发人员就不会像他应该的那样频繁地点击“测试”按钮。
正如您所看到的,集成测试是粗粒度的,当它们在容器中执行时(或者基本上:在类似生产的环境中),它们要慢得多。这些测试通常不会在每次代码更改后由开发人员执行。
当然,您可以在嵌入式模式下运行EJB容器,就像您可以在Java中执行JPA一样。关键是,人工环境为您提供了基本的服务,但您最终将对其进行调整,最终仍然比真实容器中的灵活性更低。
Arquillian使您能够在您选择的容器上创建生产环境,并在此环境中执行测试(使用数据源、JMS目的地和您期望在生产环境中看到的大量其他配置)。
希望能有所帮助。
发布于 2011-11-29 00:48:29
我今年参加了Devoxx,并有机会回答了JBOSS朋友们的这个问题。一些测试场景(我设法草草写下的东西):
container
的录音配置
https://stackoverflow.com/questions/7701935
复制相似问题