有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java TestNG在以“优先级”并行执行时出现问题

我有两门课

第一类:

@Test
public void test1(){
    System.out.println("test1-1");
}

@Test(priority = 1)
public void test2(){
    System.out.println("test2-1");
}

@Test(priority = 6)
public void test3(){
    System.out.println("test3-1");
}

@Test(priority = 9)
public void test4(){
    System.out.println("test4-1");
}


第二类:

@Test
public void test1(){
    System.out.println("test1-2");
}

@Test(priority = 1)
public void test2(){
    System.out.println("test2-2");
}

@Test(priority = 2)
public void test3(){
    System.out.println("test3-2");
}

@Test(priority = 3)
public void test4(){
    System.out.println("test4-2");
}


XML:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Smoke" verbose="1" parallel="tests" thread-count="5" >
    <test name="GalaxyS7">
        <classes>
            <class name="TempTest.ClassTest1"/>
            <class name="TempTest.ClassTest2"/>
        </classes>
    </test>
</suite>

当我执行测试时,预期的输出是:

test1-1
test2-1
test3-1
test4-1
test1-2
test2-2
test3-2
test4-2

但实际产出是:

test1-1
test1-2
test2-1
test2-2
test3-2
test4-2
test3-1
test4-1

但是当我删除parallel="tests"时,执行就像预期的那样。当我移除优先级parallel="tests"停留在XML中时,正如预期的那样执行。但我正在尝试并行运行我的测试,并在那里有优先权

这是TestNG中的错误还是我遗漏了什么

感谢您的帮助。我的目标是从第一个类运行所有测试用例,然后从第二个类运行所有测试用例


共 (1) 个答案

  1. # 1 楼答案

    正如我所能告诉你的,当以并行模式运行时,你似乎期望一个对象的每个实例都有它自己的priorities集,而你的测试套件将优先级视为全局变量,同样当优先级相等时,它会以自上而下的方式处理(TempTest.ClassTest1然后TempTest.ClassTest2

    tl;博士:
    priority在全球范围内使用,而不是在一个实例上使用