有时候希望测试用例能用代码触发,发现testng支持这种操作,于是记录一下:

首先添加testng依赖:

    <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
</dependency>

然后实现要被调用的测试用例:

/**
* testng 注解实现并发测试
*/
public class ConcurrentTest { @Test(threadPoolSize = 10, invocationCount = 10, timeOut = 1000)
public static void display() {
System.out.println(UUID.randomUUID().toString());
}
}

再用代码触发执行该测试用例:

/**
* 代码触发testng测试
*/
public class TestNgDemo { public static void main(String[] args) {
/**初始化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(); List<Long> interval = pass.stream().map(x -> (x.getEndMillis() - x.getStartMillis())).collect(Collectors.toList()); /**最大耗时*/
long maxtime = interval.stream().max(Comparator.naturalOrder()).get(); /**最小耗时*/
long mintime = interval.stream().min(Comparator.naturalOrder()).get(); /**平均耗时*/
double avgtime = interval.stream().mapToDouble(i -> i).average().getAsDouble(); System.out.println(String.format("test result: [success: %s],[failure: %s]",pass.size(),failed.size())); System.out.println(String.format("performance analysis: [maxtime: %s(ms)],[mintime: %s(ms),[avgtime: %s(ms)]]",
maxtime, mintime, avgtime));
}
}

最后执行结果如下:

[TestNG] Running:
Command line suite 894eecc7-6d39-4b8d-bc6f-36c94296ff13
f7bdeb99-2baf-4894-a0a3-40fd0792432a
ce27be2e-402b-46bb-8b71-c983f2d3b36c
4b042268-ede8-4c75-9d9a-e5ea7cf63d93
a2dd8b48-56e9-4187-b2f8-004a99164b3c
b4d188e2-1ba4-4635-a546-7131faa2dede
cbffc694-f0f5-48e3-80ec-e9cebdb054b9
904eaab1-3ef7-4627-bc6c-0e890510b119
3db7eb16-f369-449c-be2c-cb89e9647ad0
c4baf3ce-a162-40e0-aa27-e538cc09fb99 ===============================================
Command line suite
Total tests run: 10, Failures: 0, Skips: 0
=============================================== test result: [success: 10],[failure: 0]
performance analysis: [maxtime: 8(ms)],[mintime: 0(ms),[avgtime: 2.8(ms)]] Process finished with exit code 0

用代码触发testng实现并发测试的更多相关文章

  1. TestNG 八 并发测试

    一. Concurrenttesting: 下面的例子是输出进程ID,threadPoolSize用来指明线程池的大小,也就是并发的线程数目是多少 5次调用,有3个线程可调用 @Test(invoca ...

  2. 使用 TestNG 并发测试 ;

    使用TestNG对IE /Chrome/firefox 进行兼容性并发测试 : package testNGTest; import org.openqa.selenium.By; import or ...

  3. selenium从入门到应用 - 8,selenium+testNG实现多线程的并发测试

    本系列所有代码 https://github.com/zhangting85/simpleWebtest本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下s ...

  4. testng并发测试与测试并发

    一.testng并发测试 通过xml文件中suit结点的parallel属性指定,如 <suite name="bundle-module-testabc" parallel ...

  5. Java自动化测试框架-11 - TestNG之annotation与并发测试篇 (详细教程)

    1.简介 TestNG中用到的annotation的快速预览及其属性. 2.TestNG基本注解(注释) 注解 描述 @BeforeSuite 注解的方法只运行一次,在当前suite所有测试执行之前执 ...

  6. CountDownLatch模拟高并发测试代码

    直接上代码进行验证吧 /** * 通过countdownlatch的机制,来实现并发运行 * 模拟200个并发测试 * @author ll * @date 2018年4月18日 下午3:55:59 ...

  7. 使用CodeBenchmark对逻辑代码进行并发测试

    一直对性能测试比较感兴趣,所以也写了不少的测试工具有WebApiBenchmark和TcpBenchmark等;但这些工具测试都是有针对性和配置的方式来进行功能有限所以很难适用更多的场景,所以单独开发 ...

  8. java高并发测试代码

    package com.example.test; import java.net.URL;import java.net.URLConnection;import java.util.concurr ...

  9. C# 防止同时调用=========使用读写锁三行代码简单解决多线程并发的问题

    http://www.jb51.net/article/99718.htm     本文主要介绍了C#使用读写锁三行代码简单解决多线程并发写入文件时提示"文件正在由另一进程使用,因此该进程无 ...

随机推荐

  1. SpringBoot第二十三篇:安全性之Spring Security

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11350255.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   系统的安全 ...

  2. centos7单机安装kafka,进行生产者消费者测试

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11364852.html   作者:jstarseven    码字挺辛苦的.....  一.k ...

  3. 常用linux的命令

    常用但是容易忘记的命令 查看java项目的进程 ps -ef | grep java jps 根据进程查询端口 lsof -i | grep pid netstat -nap | grep pid p ...

  4. git码云的使用基础(为了以后更好的协同操作)

    git手册 安装教程 windows 不需要什么操作点点点就好 设置一个文件夹当成本地仓库 第一次上传 git init# 创建一个本地的仓库 git add. 当前文件夹下所有内容# 添加到暂存区 ...

  5. HBase的高可用(HA)

    在公司写文档时候查到的一些资料,感觉对自己很有帮助,现在整理如下: 介绍 HBase是一个高可靠性.高性能.列存储.可伸缩.实时读写的分布式数据库系统,基于列的存储模式适合于存储非结构化数据. 适用场 ...

  6. net core Webapi 总目录

    目录 博客目录 代码地址 博客目录 net core Webapi基础工程搭建(一)--开发工具及环境 net core Webapi基础工程搭建(二)--创建工程 net core Webapi基础 ...

  7. Python爬虫(一)抓取指定的页面

    (以下是在windows环境下的操作,python版本为3) 1.urllib库介绍 官方文档上的解释是: urllib is a package that collects several modu ...

  8. 基于HttpClient4.5.1实现Http访问工具类

    本工具类基于httpclient4.5.1实现 <dependency> <groupId>org.apache.httpcomponents</groupId> ...

  9. Linux命令行中好用的快捷键

    Ctrl + L:清屏,与clear同效: Ctrl + D:终结当前程序,向终端传递EOF(End Of File): Ctrl + A:光标移至一行命令开头: Ctrl + E:光标移至一行命令结 ...

  10. 数据的查找和提取[2]——xpath解析库的使用

    xpath解析库的使用 在上一节,我们介绍了正则表达式的使用,但是当我们提取数据的限制条件增多的时候,正则表达式会变的十分的复杂,出一丁点错就提取不出来东西了.但python已经为我们提供了许多用于解 ...