Arquillian运行模式

IAm*_*aja 6 java jboss-arquillian

我试图绕过Arquillian,我只是没有从根本上理解in-container模式与as-client模式之间的区别.

我的理解是,使用Arquillian/ShrinkWrap:

  • 您创建的存档仅包含要集成和测试的组件
  • 您将此内存存档流式传输到实际容器(部署它)
  • 您将存档作为容器内的测试运行
  • 您对该测试结果会发生什么断言

因此,从我的角度来看,一切都"感觉"就像它一直一样in-container,因为测试总是在容器内执行.

请帮助我理解这两种模式之间的差异以及这两种模式适合的集成测试类型.提供具体代码示例(而不是直接来自参考指南的模糊代码示例)的加分点,解释了为什么/如何在两种模式下运行测试.提前致谢!

IAm*_*aja 2

  • 容器内:用于白盒、集成测试
  • as-client:用于黑盒、功能测试

即,对于 UI/功能测试(“作为”在生产中使用应用程序的“客户端”角色),as-client使用@RunAsClient. 对于真正的集成测试(测试类之间的依赖关系,您需要有关应用程序本身的内部“白盒”知识),请使用in-container模式。

在这两种情况下,ShrinkWrap 和 Arquillian 将内存中存档 (JAR/WAR/EAR) 直接部署到配置的容器(通过 JBoss 自制的流协议),但是当测试在不同模式下运行时,它们对容器的访问权限不同,具体取决于在测试模式下。