在我的项目中,我必须当前Maven模块设置:
- Application
|- (application code, using Spring Boot 1.2.6)
- E2E-testing (has a dependency to Application)
|- src
|- main
|- java
|- AbstractCucumberTest.java以前,这是一个为JSP页面服务的Spring 3应用程序,所以没有包含Boot。我将其重构为一个引导应用程序。
E2E测试设置基本上构建了应用程序代码的WAR文件,E2E模块启动了Jetty服务器,运行WAR。一切都很好。现在,在重构之后,没那么多。
Jetty设置不再按原样工作。当我启动WAR时,我会得到类加载异常,这些异常与Jetty本身有关。现在,我没有挂在Jetty上,它只是我的一个测试容器。因此,我开始研究Boot文档,因为我确信必须有一种方法才能使其全部“引导”,这意味着:在启动测试时,我可以简单地引导应用程序。当然,最后我在AbstractCucumberTest上得到了以下注释:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ApplicationConfig.class, loader = SpringApplicationContextLoader.class)
@WebIntegrationTest({"spring.profiles.active=local"})
public abstract class AbstractCucumberTest extends SeleniumTest {因此,基本上,我正在加载应用程序的应用程序配置,并从测试中启动Tomcat服务器。大家都很高兴,因为现在应用程序在启动黄瓜测试时已经成功地启动了。应用程序引导,它读取类路径,Liquibase启动,一切正常工作。我可以调用执行器端点,它们都可以正常工作。即使是应用程序的其他端点也都在工作,因此Spring正在做它的工作。
然而,有一件事不是,这是为JSP服务的--当然,这是E2E测试的一个交易破坏者。每次我浏览一个页面,我都会得到同样令人不安的404错误。在你问之前:是的,tomcat-embed-jasper和jstl都在场。它们存在于应用程序中,我甚至将它们添加到E2E pom中,没有任何运气。事实上,这些都是我尝试过的,但都失败了:
在我看来,应用程序似乎找不到JSP,其他的一切都很正常,只是JSP没有找到/提供服务。
有人有什么想法吗?
哦,顺便提一句,我试着使用spring maven-plugin,尝试以这种方式引导应用程序。但问题是,它不能分叉。在1.2.6版本中,叉子简单地..。不叉子。当我说叉时,我的意思是用Jetty的方式:它引导应用程序,并将控制权还给Maven。它实例化了一个“停止”命令,在所有测试运行之后,Maven可以调用该命令。在1.3.0. version快照版本中,它应该是存在的(使用开始目标),但对我来说仍然不起作用。
编辑是为了它的价值,应用程序模块被配置成构建一个WAR文件。所以这不是罐子包装。
发布于 2015-10-17 07:54:32
最终,我转向了Maven货插件,这个插件工作得很好。我在E2E测试模块的pom中配置了它。如您所见,我的应用程序被标记为可部署的,货物插件在预集成测试阶段启动,并在集成后测试阶段关闭。
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.4.16</version>
<configuration>
<container>
<containerId>tomcat8x</containerId>
<zipUrlInstaller>
<url>
http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.27/bin/apache-tomcat-8.0.27.zip
</url>
</zipUrlInstaller>
</container>
<deployables>
<deployable>
<groupId>my.group.id</groupId>
<artifactId>Application</artifactId>
<type>war</type>
<properties>
<context>/context</context>
</properties>
</deployable>
</deployables>
<configuration>
<type>standalone</type>
<properties>
<cargo.servlet.port>9999</cargo.servlet.port>
<cargo.jvmargs>-Dspring.profiles.active=local</cargo.jvmargs>
</properties>
</configuration>
</configuration>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-container</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>https://stackoverflow.com/questions/32880488
复制相似问题