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代表最大并发线程数
- methods所有用例都可以在不同线程执行
- tests级别, 相同的test tag下用例只能在一个线程, 不同的test tag才可在不同的线程执行
必须用test下name属性值区分, 默认是无法区分的.
- class级别, 相同的class tag下用例只能在一个线程, 不同的class tag才可在不同的线程执行
必须用test下name属性值区分, 默认是无法区分的.