有没有一个框架可以在JVM上编写自动化性能测试?
我想设定一些性能目标,并在性能低于目标时闪烁红灯(或者在控制台打印红色消息)。
我手动运行一些使用Calliper编写的基准测试,但是我希望性能测试套件像单元测试一样自动运行。
无数据库或Web服务器。
有没有一个框架可以在JVM上编写自动化性能测试?
我想设定一些性能目标,并在性能低于目标时闪烁红灯(或者在控制台打印红色消息)。
我手动运行一些使用Calliper编写的基准测试,但是我希望性能测试套件像单元测试一样自动运行。
无数据库或Web服务器。
我不是性能测试专家,所以无法判断这个实现的难度,但使用JUnit规则应该是可行的。
它的工作方式类似于om-nom-nom提到的@Test注释,但您需要提供一个规则,例如对每个测试运行100次进行预热,然后运行100次并计算stdev,并在平均时间比设置的超时时间大2个stdev时失败测试。...或者规则应该是什么。
这里有一篇关于JUnit规则的文章article to JUnit Rules。
自JUnit第4个版本开始,支持该功能:
import org.junit.*;
public class JunitTest4 {
// timings below are in milliseconds
@Test(timeout = 1000)
public void infinity() {
// will fail
while (true);
}
}
但遗憾的是,它只是基本功能,不确定您是否完全满意:您无法测量小于毫秒的东西,无法存储测试历史记录线,也无法看到您离目标有多远。