当前位置: 首页 > 知识库问答 >
问题:

Spring Boot中多WAR应用的集成测试

慕兴平
2023-03-14

然而,我希望我的集成测试项目在Spring-Boot中运行我的测试之前,实际启动我的多战应用程序(在整个套件中运行一次)!

在我的集成测试项目中,我希望能够将所有的war项目作为spring-boot应用程序一起运行,每个项目都有自己的上下文路径(例如,localhost:8080/a用于项目'a',localhost:8080/B用于项目'b',等等),并且不改变原始的war项目(还不知道spring-boot)。如果我不能使这些项目在spring-boot中从集成测试项目运行而不更改它们,那么我至少希望尽量减少html" target="_blank">spring-boot依赖项的使用和打包war文件中的配置。

我能够让我的集成测试项目依赖于单个war项目,启动它并针对它运行测试...但是我没有成功地让两个war项目在spring-boot中在不同的上下文路径下一起运行。

欢迎任何建议!

以下是我使用的一些资源来实现这一目标:

共有1个答案

孔瑾瑜
2023-03-14

按照Andy的建议,我使用了Tomcat7 Maven插件,它工作得很好。Jetty Maven插件是另一个选择(并且是更好的IMO文档),尽管我无法找到避免必须提供WAR文件的“路径”的方法。Tomcat7 Maven插件,让我从本地的.m2存储库加载我的WAR。我还应该说,下面的链接也很有帮助...

  • http://cupofjava.de/blog/2013/02/05/Integration-tests-with-maven-and-tomcat/
  • https://stackoverflow.com/A/16936585/1098564

这是我的集成测试项目POM的一部分...

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.17</version>
            <configuration>
                <includes>
                    <include>**/*Test*</include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <path>/</path>
                <webapps>
                    <webapp>
                        <groupId>com.mycompany</groupId>
                        <artifactId>app1</artifactId>
                        <version>${project.version}</version>
                        <type>war</type>
                        <asWebapp>true</asWebapp>
                    </webapp>
                    <webapp>
                        <groupId>com.mycompany</groupId>
                        <artifactId>app2</artifactId>
                        <version>${project.version}</version>
                        <type>war</type>
                        <asWebapp>true</asWebapp>
                    </webapp>
                </webapps>
            </configuration>
            <executions>
                <execution>
                    <id>start-tomcat</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run-war</goal>
                    </goals>
                    <configuration>
                        <fork>true</fork>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-tomcat</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>shutdown</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
 类似资料:
  • 我被要求在一个非常大的SpringBoot项目中为一个服务创建一个集成测试,该项目产生了几十个已实现的服务。当应用程序执行时,所有这些服务都被部署了——我希望避免部署与我正在为其创建测试的服务无关的所有服务。不幸的是,我(还)没有像我希望的那样有很多Spring启动测试的经验,因此我想知道解决这个问题的最佳方法是什么。 我曾考虑在测试类中使用注释对所有不相关的服务进行注释,并使用对所有相关服务进行

  • 我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的

  • 问题内容: 我被要求为一个很大的SpringBoot项目中的服务创建一个集成测试,该项目会产生许多已实现的服务。执行该应用程序时,将部署所有这些服务- 我想避免部署与我正在为其创建测试的服务无关的所有服务。不幸的是,我对弹簧启动测试的经验还不如我所希望的那么多,因此我想知道解决这个问题的最佳方法是什么。 我当时正在考虑使用注解对所有不相关的服务进行注释,并在测试类中对所有相关的服务进行注释,但是我

  • 与@mockbean和@spybean一样,有没有类似于@fakebean/@dummybean的东西? 其思想是,该实例是100%真实的(具有预期的生产内部状态),并且它覆盖(或者添加bean,以防在配置中没有声明)上下文中的bean。理想情况下,您不需要创建TestConfiguration类并将其设置为Primary,因为这样可以在每个测试的基础上控制假冒,只有在需要时才可以。否则它使用主的

  • 我对springfox和Swagger2都是新手。我一直在尝试将SpringFox/Swagger2与我的spring boot微服务集成以生成API文档。 我遵循了“http://springfox.github.io/springfox/docs/snapshot/”站点中给出的步骤。但是我没有成功的带来api文档页面。 每当我试图点击URL“http://localhost:8081/swa