6

我正试图围绕 Arquillian 进行思考,但我只是没有从根本上理解in-container模式与as-client模式之间的区别。

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

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

所以,从我的角度来看,一切都“感觉”就像它永远一样in-container,因为测试总是在容器内执行。

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

4

1 回答 1

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

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

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

于 2012-07-04T18:33:32.130 回答