追求代码质量: 用 JUnitPerf 进行性能测试
2009-11-19 00:00:00 来源:WEB开发网清单 3 是用 ConstantTimer 实现的含 10 个模拟用户的负载测试:
清单 3. 为生成负载测试而实现的 suite 方法public static Test suite() {
int users = 10;
Timer timer = new ConstantTimer(100);
return new LoadTest(
new WidgetDAOImplTest("testCreate"),
users, timer);
}
请注意,testCreate() 方法运行 10 次,每个线程间隔 100 毫秒启动。未设定时间限制 —— 这些方法完整运行,如果其中任何的方法执行失败,JUnit 会相应地报告失败。
用样式进行装饰
装饰器并不局限于单个的装饰物。例如,在 Java™ I/O 中,可以为 FileInputStream 装饰上一个带 BufferedReader 的 InputStreamReader(只要记住:BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("infilename"), "UTF8")))。
装饰可以有多个层次,JUnitPerf 的 TimedTest 和 LoadTest 也是一样。当这两个类彼此装饰时,将导致一些强制的测试场景,例如像这样的场景:在一项业务中放置了负载并应用了时间限制。或者,我们可以仅仅将之前的两个测试场景以如下方式结合起来:
在 testCreate() 方法中放置一项负载。
规定每个线程必须在该时间限制内结束。
我通过为一个标准 Test 装饰上 LoadTest(由 TimedTest 装饰)应用了上述规范,清单 4 显示了其结果。
清单 4. 经装饰的负载和时限测试public static Test suite() {
int users = 10;
Timer timer = new ConstantTimer(100);
long maxElapsedTime = 2000;
return new TimedTest(new LoadTest(
new WidgetDAOImplTest("testCreate"), users, timer),
maxElapsedTime);
}
更多精彩
赞助商链接