Webdriver testng报告中的测试报告顺序是随机的
这就是我的testNG测试的样子:-Webdriver testng报告中的测试报告顺序是随机的,webdriver,testng,Webdriver,Testng,这就是我的testNG测试的样子:- public class orderTest{ @Test public void meth1() throws InterruptedException{ System.out.println("1"); Reporter.log("1"); } @Test public void meth2() throws InterruptedException{ System.
public class orderTest{
@Test
public void meth1() throws InterruptedException{
System.out.println("1");
Reporter.log("1");
}
@Test
public void meth2() throws InterruptedException{
System.out.println("2");
Reporter.log("2");
}
@Test
public void meth3() throws InterruptedException{
System.out.println("3");
Reporter.log("3");
}
@Test
public void meth4() throws InterruptedException{
System.out.println("4");
Reporter.log("4");
}
}
在eclipse上运行时,控制台显示为:-
1.
2.
3.
4.
通过:meth1
通过:meth2
通过:meth3
通过:meth4
但是当我打开testNG报告时,单击reporter输出链接,它显示为:-
报告输出-
方法1
1.
方法4
4.
meth3
3.
meth2
二,
为什么testng报告中的顺序不正确?
执行顺序为1,2,3,4
但是
报告顺序为1,4,3,2。
如果希望此文件中列出的类和方法以不可预测的顺序运行,请将“保留顺序”属性设置为false。
这就是文档所说的,所以除非拼写错误(不是说我的是完美的:),否则这是一个特性
但在我看来,只有报告顺序是不可预测的,执行似乎是相当可预测的
dtd说
@attr preserve order如果为true,则此标记中的类将按与相同的顺序运行
在XML文件中找到。
这与它的实际功能相符
这没有错,但可能是另一种情况
似乎是使报告更具吸引力的一项功能:)它也可以在输出报告中按执行顺序显示。为此,您的TestNG Reporter应该实现IReporter 使用它的好插件是。 您可以覆盖它的generateReport方法,以按其父级XML套件顺序在Html报告中显示套件,如下所示:
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectoryName) {
...
Comparator<ISuite> suiteComparator = new TestSuiteComparator(xmlSuites);
suites.sort(suiteComparator);
...
}
公共void生成器报告(列表xmlSuites、列表suites、字符串outputDirectoryName){
...
Comparator suiteComparator=新的TestSuiteComparator(xmlSuites);
suites.sort(suiteComparator);
...
}
其中,TestSuiteComparator如下所示:
public class TestSuiteComparator implements Comparator<ISuite> {
public List<String> xmlNames;
public TestSuiteComparator(List<XmlSuite> parentXmlSuites) {
for (XmlSuite parentXmlSuite : parentXmlSuites) {
List<XmlSuite> childXmlSuites = parentXmlSuite.getChildSuites();
xmlNames = new ArrayList<String>();
xmlNames.add(parentXmlSuite.getFileName());
for (XmlSuite xmlsuite : childXmlSuites) {
xmlNames.add(xmlsuite.getFileName());
}
}
}
@Override
public int compare(ISuite suite1, ISuite suite2) {
String suite1Name = suite1.getXmlSuite().getFileName();
String suite2Name = suite2.getXmlSuite().getFileName();
return xmlNames.indexOf(suite1Name) - xmlNames.indexOf(suite2Name);
}
}
公共类TestSuiteComparator实现Comparator{
公开名单;
公共TestSuiteComparator(列出ParentXmlSuite){
用于(XmlSuite parentXmlSuite:parentXmlSuites){
列出childXmlSuites=parentXmlSuite.getChildSuites();
xmlNames=newarraylist();
add(parentXmlSuite.getFileName());
对于(XmlSuite XmlSuite:childXmlSuites){
添加(xmlsuite.getFileName());
}
}
}
@凌驾
公共整数比较(ISuite套件1、ISuite套件2){
字符串suitename=suite1.getXmlSuite().getFileName();
字符串suite2Name=suite2.getXmlSuite().getFileName();
返回xmlNames.indexOf(suite1Name)-xmlNames.indexOf(suite2Name);
}
}
您使用的是什么版本的TestNG
?发布testng.xml文件。我正在使用testng6.8jar,下面是xml文件