如何在运行包含 Testng 项目的 java jar 时在命令行中给出组运行参数

问题描述 投票:0回答:1

运行 jar e,g 时

java -jar a.jar -testjar a.jar -xmlpathjar Test.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">
    <groups>
<run>
  <include name="brokenTests"/>
  <include name="checkinTests"/>
</run>
</groups>
    <classes>
        <class name="organized.chaos.GroupsPlayGround" />
    </classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

如何在参数中仅给出损坏的测试名称

java -jar a.jar -testjar a.jar -xmlpathjar Test.xml
这样只有这组测试用例才会被执行?

期望在参数本身中给出运行组

java testng testng-eclipse testng.xml
1个回答
0
投票

如果您想通过命令行参数指定组名称,那么您应该将其作为

-groups
传递(这里我假设您的可执行 jar 将直接从
org.testng.TestNG
java 类中调用 main 方法

更多详情请参考https://testng.org/#_command_line_parameters

如果您要使用套件文件并且仍然希望能够指定组名称,那么您应该使用 beanshell。

更多详情请参阅文档https://testng.org/#_beanshell_and_advanced_group_selection

这是一个示例 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");
                    groups.containsKey(whatGroup);
                ]]>
                </script>
            </method-selector>
        </method-selectors>
        <classes>
            <class name="organized.chaos.GroupsPlayGround" />
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->

您可以参考我的博文了解更多详细信息https://rationaleemotions.com/beanshell_in_testng/

© www.soinside.com 2019 - 2024. All rights reserved.