首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黄瓜E2E (硒)春季启动试验

黄瓜E2E (硒)春季启动试验
EN

Stack Overflow用户
提问于 2015-10-01 06:07:47
回答 1查看 1K关注 0票数 0

在我的项目中,我必须当前Maven模块设置:

代码语言:javascript
复制
- 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上得到了以下注释:

代码语言:javascript
复制
@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-jasperjstl都在场。它们存在于应用程序中,我甚至将它们添加到E2E pom中,没有任何运气。事实上,这些都是我尝试过的,但都失败了:

  • 从应用程序中排除tomcat-embed jasper和jstl依赖项。
  • 将JSP从应用程序复制到E2E模块的资源
  • 设置我自己的CucumberConfig,它基本上包含与ApplicationConfig相同的配置

在我看来,应用程序似乎找不到JSP,其他的一切都很正常,只是JSP没有找到/提供服务。

有人有什么想法吗?

哦,顺便提一句,我试着使用spring maven-plugin,尝试以这种方式引导应用程序。但问题是,它不能分叉。在1.2.6版本中,叉子简单地..。不叉子。当我说叉时,我的意思是用Jetty的方式:它引导应用程序,并将控制权还给Maven。它实例化了一个“停止”命令,在所有测试运行之后,Maven可以调用该命令。在1.3.0. version快照版本中,它应该是存在的(使用开始目标),但对我来说仍然不起作用。

编辑是为了它的价值,应用程序模块被配置成构建一个WAR文件。所以这不是罐子包装。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-17 07:54:32

最终,我转向了Maven货插件,这个插件工作得很好。我在E2E测试模块的pom中配置了它。如您所见,我的应用程序被标记为可部署的,货物插件在预集成测试阶段启动,并在集成后测试阶段关闭。

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32880488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档