mvn test -Dgroups=group3,group2
将根据Can I run a specific testng test group via maven?
执行groups3和groups2我想在组中运行 not 的所有测试。这可以通过maven吗?例如。我想运行不在group3中的所有测试。
“伪maven命令” mvn test -Dgroups!= group3
答案 0 :(得分:2)
根据官方的TestNG文档,请参阅http://testng.org/doc/documentation-main.html#running-testng中的“命令行参数”表,它应该可以使用:
$ mvn test -Dexcludegroups=group3
但是,为了获得更大的灵活性,我建议使用test suite configuration文件(又名testng.xml
),其位置可以通过surefire-plugin的<suiteXmlFile>
属性进行配置,请参阅:{ {3}}
这样可以完全控制群组包含/排除,请参阅:http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html
答案 1 :(得分:1)
是的,你可以在TestNG中使用beanshell来做到这一点。
您创建一个套件xml文件并定义一个beanshell,如下所示:
<?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");
!Arrays.asList(testngMethod.getGroups()).contains(whatGroup);
]]>
</script>
</method-selector>
</method-selectors>
<classes>
<class name="organized.chaos.GroupsPlayGround" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
这基本上会导致TestNG查找不属于通过JVM参数传递的组的所有测试groupToRun
我已在我的博客here中解释过这个问题。
您还可以在官方TestNG文档here上找到有关此内容的更多信息。