TestNG中实现多线程、超时
多线程测试
多线程测试-注解方式实现
使用注解@Test的属性:invocationCount(线程数)、threadPoolSize(线程池)
package com.course.testng.multiThread;
import org.testng.annotations.Test;
public class MultiThreadOnAnnotion {
    @Test(invocationCount = 10,threadPoolSize = 3)
    public void test(){
        System.out.println(1);
        System.out.printf("ID:"+Thread.currentThread().getId());
    }
}
多线程测试-xml文件实现
在套件suite标签下增加属性parallel:methods,最大并发数:thread-count
parallel:(属性值),这是属性值是什么,那么就是以什么为标志,标志对应的name不同就使用不同的线程
例如:
methods级别:所有Test的用例使用不同线程执行
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="sutiename" parallel="methods" thread-count="3">
    <!--
        test级别:不同的test tag下的用例可以在不同的线程下执行
        methods级别:所有用例都可以在不同的线程下去执行
        thread-cout:代表了最大并发线程数
        xml文件配置这种方式不能指定线程池,只有方法才可以指定线程池
    -->
    <test name="test1">
        <classes>
            <class name="com.course.testng.multiThread.MultiThreadOnThread"/>
        </classes>
    </test>
</suite>
tests级别:相同的test tag下的用例可以在同一个的线程下执行
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="sutiename" parallel="tests" thread-count="2">
    <!--
        tests级别:不同的test tag下的用例可以在不同的线程下执行
        methods级别:所有用例都可以在不同的线程下去执行
        thread-cout:代表了最大并发线程数
        xml文件配置这种方式不能指定线程池,只有方法才可以指定线程池
    -->
    <test name="demo">
        <classes>
            <class name="com.course.testng.multiThread.MultiThreadOnThread"/>
        </classes>
    </test>
    <test name="test2">
        <classes>
            <class name="com.course.testng.multiThread.MultiThreadOnThread"/>
        </classes>
    </test>
</suite>
classes级别:相同的class tag 下的用例再同一个线程下
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="sutiename" parallel="classes" thread-count="2">
    <!--
        tests级别:相同的test tag下的用例可以在同一个的线程下执行
        methods级别:所有用例都可以在不同的线程下去执行
        classes级别:相同的class tag 下的用例再同一个线程下
        thread-count:代表了最大并发线程数
        xml文件配置这种方式不能指定线程池,只有方法才可以指定线程池
    -->
    <test name="demo">
        <classes>
            <class name="com.course.testng.multiThread.MultiThreadOnThread"/>
        </classes>
    </test>
    <test name="test2">
        <classes>
            <class name="com.course.testng.BasicAnnotation"/>
        </classes>
    </test>
</suite>
超时测试
使用注解Test的属性timeOut来设置
package com.course.testng;
import org.testng.annotations.Test;
public class TimeOutTest {
    @Test(timeOut = 3000)
    public void TestSuccess() throws InterruptedException {
        Thread.sleep(2000);
    }
    @Test(timeOut = 3000)
    public void TestFaild() throws InterruptedException {
        Thread.sleep(4000);
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号