用代码触发testng实现并发测试

有时候希望测试用例能用代码触发,发现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
复制代码

 

posted @   堕落门徒  阅读(1997)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示