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 单元测试 - 并行化 + 多线程 + 无限次的主要内容,如果未能解决你的问题,请参考以下文章

多进程 MPI 与多线程 std::thread 性能

[转]TestNG的多线程并行

如何在 Visual Studio 2010 中并行化数据驱动的单元测试?

多线程进程并发并行同步异步伪并发真并发

一行 Python 实现并行化 -- 日常多线程操作的新思路

使用 data.table 并行化/多线程