Webdriver 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.

这就是我的testNG测试的样子:-

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文件