我正在开发一个由多个组件组成的Java EE 6应用程序,这些组件都打包为单独的Maven项目:
-
MyAppInterface
- OSGi模块,包含实体类,包括JPA和JAX-B注释 -
MyAppRealm
- OSGi模块,包含自定义Glassfish LoginModule和Realm -
MyAppServer
- web应用程序,包含ejb, EntityFacades, JAX-RS网关,一些管理jsp -
MyAppWeb
- web应用程序,GWT应用程序,通过XML/REST与MyAppServer通信
它们在不同项目中被分开的原因是出于可伸缩性的原因——并不是所有的东西都部署在任何地方。MyAppInterface
被所有其他项目使用。一切都在Glassfish 3.1上运行
现在我想介绍集成测试的概念。暂时不考虑MyAppWeb
,我认为通过JAX-RS网关测试所有内容是理想的。
你会怎么做?
显然,在执行测试之前,整个堆栈需要被"组装",包括后端(数据库、电子邮件、MTA)。我应该尝试自动完成这些吗?Jenkins构建一切(但不自动部署)。
这是我的想法:由于每个组件本身都不是"完整的",我认为在任何项目中放置测试都没有意义。相反,我正在考虑添加一个组件MyAppIntegrationTest
,其中除了测试之外什么都没有,Jersey Client和MyAppInterface
作为依赖项。为了进行测试,我会构建所有组件,将它们部署在测试glassfish上,然后将URL传递给MyAppIntegrationTest
,并让它运行测试。
谢谢你的想法!
我没有直接的Java EE 6经验。
然而,作为参考,在Eclipse插件开发中,使用单独的项目/插件/包进行(集成)测试是很常见的。
因此,使用单独的MyAppIntegrationTest
组件来处理集成测试对我来说非常有意义。