gpt4 book ai didi

jakarta-ee - 如何在运行集成测试之前启动tomcat?

转载 作者:行者123 更新时间:2023-12-01 04:06:39 26 4
gpt4 key购买 nike

我正在尝试在单独的 maven 配置文件中运行集成测试,因此我需要按以下步骤进行:

  • 运行tomcat服务器。
  • 运行 Selenium 服务器。
  • 运行集成测试。

  • 我按如下方式运行集成测试:
    mvn install -Pit

    但是发生的情况是在服务器启动之前先运行集成测试,这将导致测试失败,以下是我的配置:
    <profile>
    <id>it</id>
    <build>
    <plugins>


    <plugin>

    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.1.4</version>
    <configuration>

    <wait>false</wait>
    <container>
    <containerId>tomcat7x</containerId>
    <home>${env.CATALINA_HOME}</home>
    <timeout>300000</timeout>
    </container>

    <configuration>
    <type>standalone</type>
    <home>target/tomcat7x</home>
    <properties>
    <cargo.jvmargs>-XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled</cargo.jvmargs>
    </properties>
    </configuration>



    </configuration>
    <executions>
    <execution>
    <id>start-container</id>
    <phase>pre-integration-test</phase>
    <goals>
    <goal>start</goal>
    <goal>deploy</goal>
    </goals>
    </execution>
    <execution>
    <id>stop-container</id>
    <phase>post-integration-test</phase>
    <goals>
    <goal>stop</goal>
    </goals>
    </execution>
    </executions>
    </plugin>



    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>selenium-maven-plugin</artifactId>
    <executions>
    <execution>
    <id>start</id>
    <phase>pre-integration-test</phase>
    <goals>
    <goal>start-server</goal>
    </goals>
    <configuration>
    <background>true</background>
    <logOutput>true</logOutput>
    </configuration>
    </execution>

    <execution>
    <id>stop</id>
    <phase>post-integration-test</phase>
    <goals>
    <goal>stop-server</goal>
    </goals>
    </execution>
    </executions>
    </plugin>


    <plugin>

    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.8</version>

    <configuration>
    <junitArtifactName>
    org.junit:com.springsource.org.junit
    </junitArtifactName>
    <excludes>

    <exclude>**/unit/*Test.java</exclude>
    </excludes>
    </configuration>


    <executions>
    <execution>

    <id>integration-tests</id>
    <phase>integration-test</phase>
    <goals>
    <goal>test</goal>
    </goals>
    <configuration>
    <skip>false</skip>
    <excludes>
    <exclude>none</exclude>
    </excludes>

    <includes>
    <include>**/integration/*Test.java</include>
    </includes>
    </configuration>
    </execution>
    </executions>

    </plugin>
    </plugins>
    </build>

    <activation>
    <property>
    <name>it</name>
    </property>
    </activation>

    </profile>

    请告知我的配置有什么问题。

    更新 : Maven 日志
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building My APP
    [INFO] task-segment: [install]
    [INFO] ------------------------------------------------------------------------
    [INFO] [jaxws:wsimport {execution: default}]
    [debug] execute contextualize
    [INFO] [resources:resources {execution: default-resources}]
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 7 resources
    [INFO] [compiler:compile {execution: default-compile}]
    [INFO] Nothing to compile - all classes are up to date
    [debug] execute contextualize
    [INFO] [resources:testResources {execution: default-testResources}]
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 5 resources
    [INFO] [compiler:testCompile {execution: default-testCompile}]
    [INFO] Nothing to compile - all classes are up to date
    [INFO] [surefire:test {execution: default-test}]
    [INFO] Surefire report directory: C:\Workspace\MyAPP\target\surefire-reports

    -------------------------------------------------------
    T E S T S
    -------------------------------------------------------
    Running integration.MyTest

    更新3 :

    使用以下内容替换旧的surefire插件后,它工作正常:
    <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>

    <execution>
    <id>default-test</id>
    <configuration>
    <skipTests>true</skipTests>
    </configuration>
    </execution>

    <execution>
    <id>surefire-it</id>
    <phase>integration-test</phase>
    <goals>
    <goal>test</goal>
    </goals>
    <configuration>
    <includes>
    <include>**/integration/*Test.java</include>
    </includes>
    <skipTests>false</skipTests>
    </configuration>
    </execution>
    </executions>
    <configuration>
    <argLine>-Xms256M -Xmx768M -XX:MaxPermSize=256M</argLine>
    </configuration>
    </plugin>

    但是cargo插件有一个问题,它部署了war文件然后运行集成测试,在调用任何测试方法之前它取消部署war文件??

    最佳答案

    根据日志,很明显失败是因为surefire正在运行test中的集成测试。相而不是integration-test阶段。

    This link说,如何仅将surefire用于集成测试。

    This documentation更深入地了解 Maven 和集成测试的最佳实践。

    关于jakarta-ee - 如何在运行集成测试之前启动tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8893482/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com