TestNG XML执行顺序

时间:2015-08-26 09:09:09

标签: testing testng

我的testng java项目如下(按照确切的顺序)

TestNGOnePack
 ClassOne.java
 ClassTwo.java

TestNGThreePack
 ClassOne.java
 ClassTwo.java

TestNGTwoPack
 ClassOne.java
 ClassTwo.java

每个java文件如下

@Test
public void pkgName()
{
    System.out.println(this.getClass().getCanonicalName());
}

testng.xml如下

<suite name="Suite One">
<test name="Test One" >
<classes>
 <class name="TestNGTwoPack.ClassTwo" />   
 <class name="TestNGOnePack.ClassOne" />
</classes>
    <packages>
         <package name="TestNGThreePack" />
   </packages> 
</test> 

当我以testng运行时,我得到了以下输出

TestNGTwoPack.ClassTwo
TestNGThreePack.ClassOne
TestNGOnePack.ClassOne
TestNGThreePack.ClassTwo

我的问题是输出序列不明确 不应该如下吗?这里有什么不对?输出如上所述的原因是什么?

TestNGTwoPack.ClassTwo
TestNGOnePack.ClassOne
TestNGThreePack.ClassOne
TestNGThreePack.ClassTwo

2 个答案:

答案 0 :(得分:2)

不,不幸的是,您看到的是testNG中当前实施的行为

请参阅this discussion以保持最新状态。

解决方法

有几种方法可以解决此问题,包括您可以在上面的讨论中阅读的groups和dependsOnGroups等。


但在你的情况下,我认为我会选择几个套件文件和一个“Master-Suite”来激活这些套件,然后你就可以确保拥有正确的执行顺序。

您的testng_packageAandB.xml:

<?xml version="1.0" encoding="UTF-8"?>

<suite name="Suite - package A and B">
    <test name="Test - package A and B">
        <classes preserve-order="true">
            <class name="drkthng.selenium_experiments.packageB.Class01" />
            <class name="drkthng.selenium_experiments.packageA.Class02" />
        </classes>
    </test>
</suite>

您的testng_packageC.xml:

<?xml version="1.0" encoding="UTF-8"?>

<suite name="Suite - package C">
    <test name="Test - package C">
        <packages preserve-order="true">
            <package name="drkthng.selenium_experiments.packageC" />
        </packages>
    </test>
</suite>

你的“全部运行”xml:

<?xml version="1.0" encoding="UTF-8"?>

<suite name="allSuites">
  <suite-files>
    <suite-file path="testng_packageAandB.xml" />
    <suite-file path="testng_packageC.xml" />
  </suite-files>
</suite>

只运行最后一个xml会给你一个你期望的执行,在我的例子中这个:

  

[TestNG]跑步:
  d:\ JavaWorkspace \硒 - 实验\ testng_packageAandB.xml

     

drkthng.selenium_experiments.packageB.Class01   drkthng.selenium_experiments.packageA.Class02

     

[TestNG]跑步:
  d:\ JavaWorkspace \硒 - 实验\ testng_packageC.xml

     

drkthng.selenium_experiments.packageC.Class01   drkthng.selenium_experiments.packageC.Class02

答案 1 :(得分:0)

按照类之间的主要xml顺序,  如果您需要在班级设置优先级之内订购

在testng新版本(6.14。*​​)上不起作用,它在tesng 6.9.10版本中对我有效

按包不起作用:(

 <packages>
            <package name="com.a.automation.catedor.tests.Tests.*" />        
 </packages>    




    Main xml

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="All" verbose="10" parallel="false">

        <suite-files>
            <suite-file path="A.xml"/>
            <suite-file path="B.xml"/>
            <suite-file path="C.xml"/>
        </suite-files>
    </suite>

    ---A.xml ---

     <test name="General">
                <groups>
                    <run>
                        <exclude name="ignore"/>
                    </run>
                </groups>
                <classes>

                    <class name="com.a.automation.tests.ws.Class1"/>
                    <class name="com.a.automation.tests.ws.Class2"/>


                </classes>
        </test>