TestNG 中 ParallelMode

本文探讨了TestNG中的ParallelMode设置,包括ParallelMode.METHODS、ParallelMode.CLASSES和ParallelMode.TESTS的区别。ParallelMode.METHODS确保每个@Test方法在独立线程中运行;ParallelMode.CLASSES在线程中处理整个类的所有@Test方法;ParallelMode.TESTS则按<test>标签进行并行,线程ID随<test>标签变化。通过实验展示了不同ParallelMode的执行情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 TestNG 中,可以设置testNG 是否是多线程的,这时候 需要用到ParallelMode来定义
那么ParallelMode.METHODS,ParallelMode.CLASSES, ParallelMode.TESTS 有什么区别呢?

结论:
ParallelMode.METHODS:一个线程负责一个@Test标签的程序,多个并行时,每个class,method之间的线程ID都不一样
ParallelMode.CLASSES:一个线程 负责一个class里面所有的带有@Test标签的method,多个并行时,每个class之间的线程id不一样,但是同一个class里的@Test的method线程id是一样的
ParallelMode.TESTS:一个线程负责一个TestNG.xml中的一个< Test >标签,多个并行时,每个 < Test > 所包含的class,method之间的线程ID 是一致的,但是 每个< Test > 之间的线程ID是不一致的

做个实验:
ParallelMode.METHODS:

package com.howtodoinjava.parallelism;

import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class ParallelClassesTestTwo {
    @BeforeClass
    public void beforeClass() {
        long id = Thread.currentThread().getId();
        System.out.println("222 Before test-class. Thread id is: " + id);
    }

    @BeforeMethod
    public void beforeMethod() {
        long id = Thread.currentThread().getId();
        System.out.println("222 Before test-method. Thread id is: " + id);
    }

    @Test
    public void testMethodOne() {
        long id = Thread.currentThread().getId();
        System.out.println("222 Sample test-method One. Thread id is: " + id);
    }

    @Test
    public void testMethodTwo() {
        long id = Thread.currentThread().getId();
        System.out.println("222 Sample test-method Two. Thread id is: " + id);
    }

    @AfterMethod
    public void afterMethod() {
        long id = Thread.currentThread().getId();
        System.out.println("222 After test-method. Thread id is: " + id);
    }

    @AfterClass
    public void afterClass() {
        long id = Thread.currentThread().getId();
        System.out.println("222 After test-class. Thread id is: " + id);
    }
}

对应的testNG.xml 如下,

<suite name="Test-method Suite" parallel="methods" thread-count=&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值