Java 单元测试 - 并行化 + 多线程 + 无限次
Posted
技术标签:
【中文标题】Java 单元测试 - 并行化 + 多线程 + 无限次【英文标题】:Java Unit Tests - Parallelization + Multiple Threads + Infinite times 【发布时间】:2018-02-23 03:50:24 【问题描述】:我有一堆 Java JUnit 测试类,它们对 Elastic Search 进行 REST 调用。我正在尝试检查编排测试套件的最佳方法是什么,以便满足以下要求 -
-
使用不同的输入参数无限运行它们[帮助我加载测试 ElasticSearch 并收集响应时间并检查 ES 的缓存功能等]
并行运行其中几个测试类
以多线程方式运行它们
注意 # 我知道有几种不同的方法可以实现它,例如使用 JMeter 等。我正在尝试看看这是否可以通过编程方式实现。
一个想法是在 TestNG 中创建一个启用并行选项的测试套件,并设置一个 cron 以每 X 分钟调用一次测试套件。[如何在此处更改线程数?]
谢谢!
【问题讨论】:
#2和#3有什么区别? 如果我有 4 个测试类,每个测试类有 5 个方法 - 我可能想要并行运行 4 个测试类中的 3 个(这是#2)。而且我还希望 4 个测试类中的 3 个在 5 个不同的线程中运行(这是#3)。由于多线程,本质上将我的 4 个不同的类视为 20 个(4 次 5 )个不同的类。 如果你没有任何想法,无论是谁投了反对票或投票决定关闭它……拜托! 要并行运行需要多个线程 【参考方案1】:您可以考虑以下选项:
-
使用JMH (Java Microbenchmark Harness) 以多线程方式运行您的测试并获得一些指标。有jmh-tutorial 示例项目可以帮助您入门
使用Apache JMeter 工具,它带有JUnit Request 采样器,这似乎是您正在寻找的东西,因为它旨在并行运行JUnit 测试。此外,您将能够使用工作负载定义的所有 JMeter 功能,包括加速、拆除、保持负载的时间、定义每秒所需的请求率和报告。查看How to Use JUnit With JMeter 指南,了解如何通过 JMeter 运行现有的 JUnit 测试
【讨论】:
以上是关于Java 单元测试 - 并行化 + 多线程 + 无限次的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2010 中并行化数据驱动的单元测试?