5

我使用 maven cargo 和 selenium 进行自动化。这是代码:

<plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.0.5</version>
            <configuration>
                <wait>false</wait>
                <container>
                    <containerId>tomcat6x</containerId>
                    <zipUrlInstaller>
                        <url>
                            http://mirrors.enquira.co.uk/apache/tomcat/tomcat-6/v6.0.30/bin/apache-tomcat-6.0.30.zip
                        </url>
                        <installDir>${installDir}</installDir>
                    </zipUrlInstaller>
                    <output>
                        ${project.build.directory}/tomcat6x.log
                    </output>
                    <log>${project.build.directory}/cargo.log</log>
                </container>
                <configuration>
                    <home>
                        ${project.build.directory}/tomcat6x/container
                    </home>
                    <properties>
                        <cargo.logging>high</cargo.logging>
                        <cargo.servlet.port>8081</cargo.servlet.port>
                    </properties>
                    <files>
                        <copy>
                          <file>${project.basedir}/src/main/resources/datasource.properties</file>
                          <todir>webapps</todir>
                          <configfile>true</configfile>
                          <overwrite>true</overwrite>
                        </copy>
                    </files>
                    <properties>
                       <customMessage>${catalina.home}</customMessage>
                    </properties>
                </configuration>
            </configuration>
            <executions>
                <execution>
                    <id>start-container</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>configure</goal>
                        <goal>start</goal>
                        <goal>deploy</goal>
                    </goals>
                    <configuration>
                        <deployer>
                            <deployables>
                                <deployable>
                                    <groupId>${project.groupId}</groupId>
                                    <artifactId>${project.artifactId}</artifactId>
                                    <type>war</type>
                                    <pingURL>**the url**</pingURL>
                                    <pingTimeout>180000</pingTimeout>
                                    <properties>
                                        <context>**war-name**</context>
                                    </properties>
                                </deployable>
                            </deployables>
                        </deployer>
                    </configuration>
                </execution>

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

但是随着战争开始变得越来越大,pingtimeout 开始增加,我不想使用 ping timeout,但我现在被迫这样做,因为部署需要一些时间,如果没有提到 pingtimeout,selenium 不会等待。

这个问题有什么解决办法吗?

4

1 回答 1

1

使用 Jetty 怎么样?maven-jetty-plugin 将等到您的 web 应用程序加载完毕。或者,您可以使用 tomcat-maven-plugin 及其部署目标通过 Tomcat 管理器将您的 webapp 部署到正在运行的 Tomcat 实例。该插件还将等待执行(因此启动您的 Selenium 测试),直到部署战争。

这是我的配置。它将启动 Jetty、部署应用程序、启动 Selenium、启动 Selenium 测试并最终退出所有服务器:

<plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <configuration>
          <contextPath>/</contextPath>
          <scanIntervalSeconds>0</scanIntervalSeconds>
        </configuration>
        <executions>
          <execution>
            <id>start</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <daemon>true</daemon>
            </configuration>
          </execution>
          <execution>
            <id>stop</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>
        <configuration>
          <background>true</background>
        </configuration>
        <executions>
          <execution>
            <id>start-selenium</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>start-server</goal>
            </goals>
          </execution>
          <execution>
            <id>stop-selenium</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>
        <executions>
          <execution>
            <id>selenium-tests</id>
            <phase>integration-test</phase>
            <goals>
              <goal>test</goal>
            </goals>
            <configuration>
              <skip>false</skip>
              <excludes>
                <exclude>none</exclude>
              </excludes>
              <includes>
                <include>**/*SeleniumTest.java</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>
于 2011-03-10T11:28:24.827 回答