我可以通过maven排除特定的testng测试组吗?

时间:2017-07-09 20:59:15

标签: java maven testng

 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

2 个答案:

答案 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上找到有关此内容的更多信息。