TestNG.xml套件包含所有包的所有文件

时间:2012-09-18 08:24:13

标签: java maven automated-tests testng

即将使用Maven + TestNG + Selenium实现测试框架。

如何声明一个告诉TestNG运行所有测试的suite.xml?我已经尝试了所有这些无济于事:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
  <test name="all">
    <classes>
      <class name="*" />
    </classes>
  </test>
</suite>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
  <test name="all">
    <groups>
      <run>
        <include name="*" />
        <exclude name="disabled" />
      </run>
    </groups>
  </test>
</suite>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
  <test name="all">
    <packages>
      <package name="*" />
    </packages>
  </test>
</suite>

我需要指定具有不同参数的不同套件配置,但所有测试都运行。我可以明确地挖掘的每个例子都列出了每个对我来说都没有意义的类或包。

5 个答案:

答案 0 :(得分:17)

据我所知,应该使用。*来匹配它们。

答案 1 :(得分:8)

您可以通过将testng.xml文件声明为

来在包中添加所有测试类
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sampleTest" parallel="false">

    <test name="sample-Test" preserve-order="true" verbose="2">
        <packages>
            <package name="org.sample.something.*"/>
        </packages>
    </test>

</suite>

没有地方可以将测试作为搜索选项传递。如果你想做类似的事情,你必须在代码中实现套件并在那里实现搜索场景。

答案 2 :(得分:2)

假设你有一个三级包,你的测试类在com.abc.xyz包下。

<package name="*" /> </packages> , doesn't work. 
<package name="com.*.*" />  doesn't work. 
<package name="com.abc.*" />  does work.

答案 3 :(得分:1)

AFAIK testng没有您正在寻找的正则表达式选项。

但是,我认为你可以通过两种方式获得你想要的东西:

  1. 如果您正在使用Testng插件处理Eclipse。您只需选择包含所有包定义的测试文件夹即可。使用maven,它主要是你的src / test / java文件夹,右击并说运行为testng。这会做的是它会创建一个临时的customsuite.xml,它将列出你的所有类。您可以将xml保存为默认xml。

  2. 带有maven的surefire插件可以选择指定includes,然后指定模式。 您可以尝试将其设置为* / .java,我认为它会拾取所有测试用例(尽管没有尝试过)。您可以将测试调用为mvn test。

答案 4 :(得分:0)

在TestNg的3公斤级以下工作

<package name="orgPkg.namePkg.appnamePkg.applicationPkg.functionalityPkg"/></packages>