2015-09-15 176 views
0

我想为我的Web应用程序的REST资源编写一个单元(组件)测试。该测试应该针对公开的REST接口,并通过发出请求并检查响应来测试其行为。Arquillian,Spring WebApplicationInitializer,嵌入式Tomcat

通过使用Spring的WebApplicationInitializer,配置web应用程序时不使用web.xmlapplicationContext.xml。当我只在我的(Tomcat)服务器上运行应用程序时,这工作正常。

当开始我的Arquillian测试时,ShrinkWrap归档文件部署在嵌入式Tomcat服务器上。由于嵌入式服务器使用我的Web应用程序的类路径运行,因此它也会找到我的WebApplicationInitializer类。这是有问题的,因为它加载了很多依赖关系,应该只是为了测试而激活。

如何在测试中取消激活我的WebApplicationInitializer(并提供替代实施)?

使用XML配置文件时,这对应于隐藏实际配置文件并使用测试中使用的特定(空?)配置。

回答

0

我通过使用我在Arquillian的@Deployment方法中设置的静态字段禁用我的WebApplicationInitializer实例来解决此问题。

您可能还想查看metadata-complete,这会导致Tomcat不调用委托给WebApplicationInitializer实例的Spring部件。

+0

是的,这是使用嵌入式容器的问题之一。您也可以使用托管/远程容器。 – LightGuard

相关问题