我的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
答案 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.xmldrkthng.selenium_experiments.packageB.Class01 drkthng.selenium_experiments.packageA.Class02
[TestNG]跑步:
d:\ JavaWorkspace \硒 - 实验\ testng_packageC.xmldrkthng.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>