1. 在方法注释中配置多线程, 配置线程池


package com.actiger.test.thread;

import org.testng.annotations.Test;

public class MultiThread {

    @Test(invocationCount = 10, threadPoolSize = 3)
    public void test(){
        System.out.println("1");
        System.out.println("Thread ID:%s%n" + Thread.currentThread().getId());
    }
}

2. 在xml中配置多线程, 不可配置为线程池.

package com.actiger.test.thread;

import org.testng.annotations.Test;

public class MultiThreadOnXml {

    @Test
    public void test1(){
        System.out.println("Thread ID: " + Thread.currentThread().getId());
    }

    @Test
    public void test2(){
        System.out.println("Thread ID: " + Thread.currentThread().getId());
    }

    @Test
    public void test3(){
        System.out.println("Thread ID: " + Thread.currentThread().getId());
    }
}

multiThread.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="thread" parallel="methods" thread-count="2">
    <test name="test">
        <classes>
            <class name="com.actiger.test.thread.MultiThreadOnXml"></class>
        </classes>
    </test>
</suite>

3. 规则说明

在multiThread.xml里suite标签下parallel属性配置说明(methods,tests,class), thread-count代表最大并发线程数

  1. methods所有用例都可以在不同线程执行
  2. tests级别, 相同的test tag下用例只能在一个线程, 不同的test tag才可在不同的线程执行

必须用test下name属性值区分, 默认是无法区分的.

  1. class级别, 相同的class tag下用例只能在一个线程, 不同的class tag才可在不同的线程执行

必须用test下name属性值区分, 默认是无法区分的.