我有两组测试用例,如下所述。
@Test(groups="one", dataProvider = "TestData")
public void firstTest(String data){
//Code
}
@Test(groups="one", dataProvider = "TestData")
public void secondTest(String data){
//Code
}
@Test(groups="two", dataProvider = "TestData")
public void thirdTest(String data){
//Code
}
下面是 XML 文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test-Automation" parallel="methods" thread-count="2" verbose="1">
<test name="Suite Test" parallel="methods" thread-count="2" verbose="1">
<listeners>
<listener class-name="GroupByInstanceEnabler"></listener>
</listeners>
<classes>
<class name="SampleTest">
<methods>
<include name="firstTest"/>
<include name="secondTest"/>
<include name="thirdTest"/>
</methods>
</class>
</classes>
</test>
</suite>
下面是 pom.xml 构建详细信息。
<build>
<finalName>Automation</finalName>
<filters>
<filter>profiles/${build.profile.id}/config.properties</filter>
</filters>
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/test/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${project.basedir}/testng.xml</suiteXmlFile>
</suiteXmlFiles>
<parallel>method</parallel>
<threadCount>2</threadCount>
</configuration>
</plugin>
</plugins>
</build>
我的问题:
使用Maven,如何分别运行组“一”和组“二”。
我尝试了“mvn test -Dgroups=two”,但它仅正常运行(所有测试)。
注意:我使用 2 个不同的配置文件以不同的值运行组“一”两次。这就是您在 pom.xml 文件中看到配置文件配置的原因。
您可以使用 beanshell 表达式来完成此操作。
首先将如下所示的 beanshell 表达式添加到套件 xml 文件中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<test name="Test">
<method-selectors>
<method-selector>
<script language="beanshell">
<![CDATA[whatGroup = System.getProperty("groupToRun");
groups.containsKey(whatGroup);
]]>
</script>
</method-selector>
</method-selectors>
<classes>
<class name="organized.chaos.GroupsPlayGround" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
通过这种方式,您可以使用 IDE 中的套件 xml,并且仍然选择要执行的组。如果没有通过 JVM 参数提供任何值,您可以丰富此 beanshell 以默认运行所有内容
-DgroupToRun=one
有关 beanshell 执行的更多信息,请参阅:
我收到错误 - 未定义参数:whatGroup : at Line: 2 : in file: 内联评估:``whatGroup = System.getProperty("groupToRun");