在上周,我创建了两个类,我的团队对它们的性能表示出了一些担忧。为了评估我的代码,我编写了一些简单的JUnit测试,通过构建丰富的测试数据集,然后将这些数据通过相关方法进行数千次迭代来测试这些类。我使用循环和System.nanoTime()
记录了每次迭代的运行时间,然后记录了最高、最低和平均时间。最后,我使用JUnit断言高和平均时间是否在可接受的限制范围内。这种测试方法使我的团队对这段代码充满信心。
JUnit是测试性能的正确工具吗?在单元(方法和类)级别上,有更好的性能测试工具吗?
在上周,我创建了两个类,我的团队对它们的性能表示出了一些担忧。为了评估我的代码,我编写了一些简单的JUnit测试,通过构建丰富的测试数据集,然后将这些数据通过相关方法进行数千次迭代来测试这些类。我使用循环和System.nanoTime()
记录了每次迭代的运行时间,然后记录了最高、最低和平均时间。最后,我使用JUnit断言高和平均时间是否在可接受的限制范围内。这种测试方法使我的团队对这段代码充满信心。
JUnit是测试性能的正确工具吗?在单元(方法和类)级别上,有更好的性能测试工具吗?
可能有更好的方法,但也有一些框架可以帮助使用JUnit实现基准测试。一些有用的实践是预热运行,统计评估。请查看JUnitBenchmarks和JUnitPerf
编辑看起来自题目提出后JUnitBenchmarks已经被废弃。该项目的维护者建议转向JMH。感谢Barry NL提供信息。
@Test(timeout=12345)
进行配置。JUnit更适合单元测试,也许在这种情况下TestNG会是一个更好的选择,特别是它的@Dataprovider
功能:
//This method will provide data to any test method that declares that its Data Provider
//is named "test1"
@DataProvider(name = "test1")
public Object[][] createData1() {
return new Object[][] {
{ "Cedric", new Integer(36) },
{ "Anne", new Integer(37)},
};
}
//This test method declares that its data should be supplied by the Data Provider
//named "test1"
@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
System.out.println(n1 + " " + n2);
}
这里是具体文档。