多线程测试工具groboutils的使用
来源:互联网 发布:javascript 清空对象 编辑:程序博客网 时间:2024/05/01 04:58
http://blog.csdn.net/zhangyaoming2004/article/details/7619489
一直使用junit做为服务测试框架,感觉不错。最近有人反映在高并发的情况下,存在服务调不到。无奈再次打开单元测试模拟高并发的
情况,却发现junit不支持并发测试
引入groboutils jar包,其实我主要使用MultiThreadedTestRunner类和TestRunnable类。
原有的junit框架不做改变,导入GroboTestingJUnit-1.2.1-core.jar包
代码如下
public class FaultServiceTest extends TestCase {
/**
* @param args
* @throws FaultException
* @throws ExpParamNotFoundException
* @throws ParseException
*/
private IFaultService faultService;
private static final int NUM_THREAD = 100; // 测试线程总数
public FaultServiceTest() {
super();
IInitService initService = (IInitService) CustomBeanFactory
.getBean("initService");
initService.initSiteDatabase();
this.faultService = (IFaultService) CustomBeanFactory
.getBean("faultService");
}
public FaultServiceTest(String name) {
super(name);
IInitService initService = (IInitService) CustomBeanFactory
.getBean("initService");
initService.initSiteDatabase();
this.faultService = (IFaultService) CustomBeanFactory
.getBean("faultService");
}
// 高并发测试
public void testGetEquipEventAlertListByPage() throws Throwable {
EquipmentQueryBean equipmentQueryBean = new EquipmentQueryBean();
// 生成所有测试线程
TestRunnable[] test = new TestRunnable[NUM_THREAD];
long start = System.currentTimeMillis();
for (int i = 0; i < test.length; i++) {
test[i] = new FaultServiceThread(faultService, equipmentQueryBean);
}
// 生成测试线程运行器
MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(test);
// 运行测试线程
mttr.runTestRunnables();
long used = System.currentTimeMillis() - start;
System.out.printf("%s 调用花费 %s milli-seconds.\n", NUM_THREAD, used);
}
public static Test suite() {
TestSuite test = new TestSuite("HealthService接口类测试");
test.addTest(new FaultServiceTest("testGetEquipEventAlertListByPage"));
return test;
}
/*
* 测试线程类定义
*/
private static class FaultServiceThread extends TestRunnable {
private IFaultService faultService;
private EquipmentQueryBean equipmentQueryBean;
public FaultServiceThread(IFaultService faultService,
EquipmentQueryBean equipmentQueryBean) {
super();
this.faultService = faultService;
this.equipmentQueryBean = equipmentQueryBean;
}
@Override
public void runTest() throws Throwable {
faultService.getEquipEventAlertListByPage(equipmentQueryBean);
}
}
}
运行代码,并发数开到100个后观察运行时间发现运行运行时间到了12秒了,看来问题出在DAO。需要进行sql代码优化了
导入的测试包有:
import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;
import net.sourceforge.groboutils.junit.v1.TestRunnable;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
- 多线程测试工具groboutils的使用
- 多线程测试工具groboutils的使用
- 使用GroboUtils进行多线程测试
- Junit使用GroboUtils进行多线程测试
- Junit使用GroboUtils进行多线程测试
- Junit使用GroboUtils进行多线程测试
- 在本地使用GroboUtils进行多线程测试
- GroboUtils进行多线程测试
- SpringMVC使用MockMvc和GroboUtils进行多线程测试
- 使用GroboUtils多线程并发请求测试springmvc controller
- 使Junit可以测试多线程的插件:groboutils
- Junit4单元测试 (二) GroboUtils进行多线程测试
- SSH框架学习(十、Junit+GroboUtils进行多线程测试)
- SSH框架学习(十、Junit+GroboUtils进行多线程测试)
- SSH框架学习(八、Junit+GroboUtils进行多线程测试)
- GroboUtils之多线程测试
- 多线程JUnit单元测试:GroboUtils and ConTest
- 多线程JUnit单元测试:GroboUtils and ConTest
- replaceAll Dangling meta character '*' near index 0
- 网络语音实时通信音频下的缓冲区设计
- solr包目录
- 工作5年半了,最近准备做一些工作的小结了
- ubuntu下创建备份
- 多线程测试工具groboutils的使用
- 算法导论22.4-2 有向无环图的路径数目
- CCActionEase想说爱你也不难 (上)
- Wondows Sever 2003密钥【收集】
- linux多CPU进程负载均衡解析
- MySQL server has gone away
- pjsip 视频部分学习思路
- 从Oracle到MySQL,余额宝云实践分享——技术迁移实录
- QQ菜单截图小技巧