是否有在 JVM 上编写自动化性能测试的框架?
我想设置一些性能目标并在每次性能低于目标时闪烁红灯(或者更确切地说打印红色控制台消息)。
我有一些用 Calliper 编写的基准,我手动运行,但是我希望性能测试套件能够像单元测试一样自动运行。
没有数据库或网络服务器。
是否有在 JVM 上编写自动化性能测试的框架?
我想设置一些性能目标并在每次性能低于目标时闪烁红灯(或者更确切地说打印红色控制台消息)。
我有一些用 Calliper 编写的基准,我手动运行,但是我希望性能测试套件能够像单元测试一样自动运行。
没有数据库或网络服务器。
由于第 4 版 JUnit 支持该功能:
import org.junit.*;
public class JunitTest4 {
// timings below are in milliseconds
@Test(timeout = 1000)
public void infinity() {
// will fail
while (true);
}
}
但遗憾的是,它只是一个基本功能,不确定你是否会完全满意:你不能测量小于毫秒的东西,你不能存储测试的历史记录,你看不到你离目标。
我不是性能测试专家,所以我无法判断这实现起来有多么困难,但使用 JUnit 规则应该可以。
它的工作原理类似于 om-nom-nom 提到的 @Test 注释,但您将提供一个规则,例如运行每个测试 100 次以进行预热,而不是运行 100 次并计算 stdev 并在平均时间失败时测试比设置的timeoiut 大2 个标准差。......或者任何规则应该是。
这是一篇关于 JUnit 规则的文章。
当我问这个问题时, ScalaMeter工具包完全符合我的要求。