java - 并行执行且使用 "priority"时出现 TestNG 问题

标签 java unit-testing selenium testng

我有两个类。

第 1 类:

@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 中的错误还是我遗漏了什么?

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

最佳答案

据我所知,您似乎期望在并行模式下运行时,对象的每个实例都有自己的一组优先级,而您的测试套件将优先级视为全局变量,而且当优先级相等时,它会以自上而下的方式处理(TempTest.ClassTest1然后TempTest.ClassTest2)。

tl;博士:
优先级用于全局范围,而不是实例范围。

关于java - 并行执行且使用 "priority"时出现 TestNG 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40167328/

相关文章:

xslt - 我们如何使用 jenkins 控制台日志通过和失败计数生成 html 报告?

visual-studio-2008 - 在 Mono 中运行 Visual Studio 2008 C#(基于 MSTest.exe)单元测试

unit-testing - 什么是 "Stub"?

java - 如何使用 xpath 访问特定的子 div? ( Selenium java )

selenium - 使用 Selenium IDE 选择 Kendo 下拉列表

python - 假设+单元测试测试锁定sqlite数据库

java - 我应该在哪里放置 Java 依赖项来运行crawler4j-2.2.jar?

java - 无法运行程序 "ping": CreateProcess error=8

java - Gradle在testRunTime期间排除本地jar

java - DBCP 返回关闭的连接