使用pom.xml中的参数切换环境以进行selenium测试+使用mvn命令行参数

时间:2018-01-08 19:53:12

标签: java maven selenium-webdriver pom.xml parameterization

我的目标:例如,使用参数在我的测试中切换环境:

  

mvn test google - >测试进入谷歌网站

     

mvn test bing - > bing网站

“我需要提供我的测试,哪个环境是目标,它应该来自pom.xml并将它们用作参数。”

对于teamcity / jenkins集成也非常有用。 除此之外,我需要在我的测试中使用url作为变量。我怎么能这样做?

配置文件可以是pom.xml中的解决方案吗?

<profiles>
    <profile>
        <id>google</id>
        <properties>
            <base.url>http://www.google.com</base.url>
        </properties>
    </profile>
    <profile>
        <id>bing</id>
        <properties>
            <base.url>http://www.bing.com</base.url>
        </properties>
    </profile>
</profiles>

来自构建部分:

<configuration>
   <systemProperties>
       <base.url>${base.url}</base.url>
   </systemProperties>
</configuration>

但是我如何使用系统属性并且整体方法很好?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以将maven-surefire-plugin配置为仅包含特定测试类和运行mvn test。通过default,mvn将运行所有这些:

  • “** / Test * .java” - 包括所有子目录和所有以“Test”开头的Java文件名。
  • “** / * Test.java” - 包括其所有子目录和所有以“Test”结尾的Java文件名。
  • “** / * Tests.java” - 包括其所有子目录和所有以“Tests”结尾的Java文件名。
  • “** / * TestCase.java” - 包括其所有子目录和所有以“TestCase”结尾的Java文件名。

但您可以指定要包含的测试:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20.1</version>
        <configuration>
          <includes>
            <include>Sample.java</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

或排除:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.20.1</version>
        <configuration>
          <excludes>
            <exclude>**/TestCircle.java</exclude>
            <exclude>**/TestSquare.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

话虽如此,这可能不是最好的设计,一般来说,您应该使用一些测试框架,然后您可以根据需要进行配置。很少有例子(或组合):jUnit,TestNG,Cucumber,Spring。

例如,

在Cucumber 中,您可以拥有标签,然后您可以将其配置为测试执行的一部分。如果你使用Jenkins,你可能会在build fild中有这样的东西:

clean install -Dcucumber.options="--tags @Google

clean install -Dcucumber.options="--tags @Bing

在Spring 中,您可以将您可以像Jenkins这样运行的配置文件运行:

mvn clean test -Dspring.profiles.active="google"

修改

或者,您可以在pom中定义自定义属性,如下所示:

<properties>
   <myProperty>command line argument</myProperty>
</properties>

然后从命令行传递它:

mvn install "-DmyProperty=google"

<强> EDIT2

在命令行中提供-D前缀值是一种设置系统属性的方法。您可以从Java代码本身执行此操作,如下所示:

Properties props = System.getProperties();
props.setProperty("myPropety", "google");

或简单地说:

System.setProperty("myPropety", "google");