TestNG并发测试用例,主要是提高用例执行效率与测试单个函数的高并发
例子:统计执行随机生成唯一识别码运行时间
新建类ConcurrentTest
package com.test.test_modle;
import org.testng.annotations.Test;
import java.util.UUID;
public class ConcurrentTest {
@Test(threadPoolSize = 10, invocationCount = 10, timeOut = 5)
public static void display() {
System.out.println(UUID.randomUUID().toString());
}
}
新建类:TestNgDemo
package com.test.test_modle
import org.testng.ITestResult
import org.testng.TestListenerAdapter
import org.testng.TestNG
import org.testng.annotations.Test
import java.util.Comparator
import java.util.List
import java.util.stream.Collectors
public class TestNgDemo {
@Test
public static void display_test() {
/* 初始化testNG对象 */
TestNG testNG = new TestNG()
TestListenerAdapter listener = new TestListenerAdapter()
/* 添加监听类便于统计成功与失败的用例 */
testNG.addListener(listener)
/* 添加需要执行的测试类数组 */
testNG.setTestClasses(new Class[]{
ConcurrentTest.class
})
/* 执行测试用例 */
testNG.run()
/* 汇总分析统计失败与成功的用例 */
List<ITestResult> pass = listener.getPassedTests()
List<ITestResult> failed = listener.getFailedTests()
System.out.println(String.format("test result: [success: %s],[failure: %s]",pass.size(),failed.size()))
/* stream声明流文件类型 */
/* a返回时间结果对应成功用例流 */
/* 统计执行成功用例的时间 */
List<Long> interval = pass.stream().map(a -> (a.getEndMillis() - a.getStartMillis())).collect(Collectors.toList())
/* Comparator比较接口 */
/* naturalOrder()返回一个自然顺序的比较结果 */
/* 最大耗时 */
long maxtime = interval.stream().max(Comparator.naturalOrder()).get()
System.out.println(String.format("performance analysis: [maxtime: %s(ms)]", maxtime))
/* 最小耗时 */
long mintime = interval.stream().min(Comparator.naturalOrder()).get()
System.out.println(String.format("performance analysis: [mintime: %s(ms)]", mintime))
/* b统计前两个用例流(最大与最小) */
/* 平均耗时 */
double avgtime = interval.stream().mapToDouble(b -> b).average().getAsDouble()
System.out.println(String.format("performance analysis: [avgtime: %s(ms)]", avgtime))
}
}