多线程测试工具groboutils的使用
一直使用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;
             原文地址:https://blog.csdn.net/zhangyaoming2004/article/details/7619489                       
多线程测试工具groboutils的使用的更多相关文章
- Junit使用GroboUtils进行多线程测试
		写过Junit单元测试的同学应该会有感觉,Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的.JVM都终止了,在测试线程启动的其他线程自 ... 
- JUNIT4 GroboUtils多线程测试
		阅读更多 利用JUNIT4,GroboUtils进行多线程测试 多线程编程和测试一直是比较难搞的事情,特别是多线程测试.只用充分的测试,才可以发现多线程编码的潜在BUG.下面就介绍一下我自己在测试多线 ... 
- 多线程的单元测试工具 - GroboUtils
		写过Junit单元测试的同学应该会有感觉,Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的.JVM都终止了,在测试线程启动的其他线程自 ... 
- Mysql多线程性能测试工具sysbench 安装、使用和测试
		From:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html 摘要: sysbench是一个开源的.模块化的.跨 ... 
- sysbench测试工具
		sysbench简介 Sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.它主要包括以下几种方式的测试:cpu性能,磁盘io性能,线程调度性 ... 
- 开源多线程性能测试工具-sysbench
		导读 sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.数据库目前支持MySQL/Oracle/PostgreSQL.本文主要演示Mysql测试 ... 
- WEB压力测试工具Pylot试用
		Pylot介绍 转载自[http://www.freehao123.com/pylot-web/] 为了能够准确地评估网站服务器对网络流量的承受能力,我们一般会采取模拟网站用户访问,通过不断地增加并发 ... 
- sysbench压力测试工具简介和使用(一)
		sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据 ... 
- 十个免费的Web压力测试工具
		两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ... 
随机推荐
- python图片转字符画(转)
			先上代码: from PIL import Image import argparse #命令行输入参数处理 parser = argparse.ArgumentParser() parser.add ... 
- 由于数据库 'XXX' 离线,无法打开该数据库。
			大家使用sql server 进行还原的时候可能会遇到: system.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权 这个错误 下面是有一个解决 ... 
- 浅谈BSGS(大步小步)及其扩展
			用途: 一般用来求\(a^x\equiv b\,\,(mod\,p)\)的最小正整数解,其中gcd(a,p)=1 设\(u=\lceil sqrt(p)\rceil\),则式子可以转化为\(a^{iu ... 
- OI多项式 简单学习笔记
			咕咕咕 先开个坑(其实是存模板来了) 一些特别简单的前置东西qwq 复数的计算 复数相加:向量相加,复数相乘.复数相乘:模长相乘,旋转量相加(就是复平面坐标轴逆时针旋转的角度) (当然也可以直接使用c ... 
- SpringCloud 入门知识篇
			SpringCloud 入门 springcloud 学习 7天学会springcloud 教程 https://www.cnblogs.com/skyblog/category/738524.htm ... 
- 【bzoj2763】[JLOI2011]飞行路线
			*题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ... 
- 【bzoj3223】Tyvj 1729 文艺平衡树
			题目描述: 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 输入 ... 
- 微信小程序登录 code 40029 天坑
			微信登录时 code 大坑(服务端返回如下代码) {"errcode":40029,"errmsg":"invalid code, hints: [ ... 
- 小菜鸟 菜谈 KMP->字典树->AC自动机->trie 图 (改进与不改进)
			本文的主要宗旨是总结自己看了大佬们对AC自动机和trie 图 的一些理解与看法.(前沿:本人水平有限,总结有误,希望大佬们可以指出) KMP分割线--------------------------- ... 
- 无人驾驶车辆路径跟踪的增量式PID控制
			路径跟踪是无人车研究方向的一项关键技术.路径跟踪控制算法是指能够使无人车按照预设路径,安全稳定行驶的控制方法. 建立无人车路径跟踪模型 预设无人车在A.B两点间,当前位置为D点,航向为hF 可以得到B ... 
