WEB开发网
开发学院软件开发Java 追求代码质量: 用 JUnitPerf 进行性能测试 阅读

追求代码质量: 用 JUnitPerf 进行性能测试

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 清单 3 是用 ConstantTimer 实现的含 10 个模拟用户的负载测试:清单 3. 为生成负载测试而实现的 suite 方法publicstaticTestsuite(){intusers=10;Timertimer=newConstantTimer(100);returnnewLoa

清单 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);   
} 

上一页  1 2 3 4 5  下一页

Tags:追求 代码 质量

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接