zoukankan      html  css  js  c++  java
  • 多线程测试工具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. ", 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
  • 相关阅读:
    《DSP using MATLAB》Problem 6.17
    一些老物件
    《DSP using MATLAB》Problem 6.16
    《DSP using MATLAB》Problem 6.15
    《DSP using MATLAB》Problem 6.14
    《DSP using MATLAB》Problem 6.13
    《DSP using MATLAB》Problem 6.12
    《DSP using MATLAB》Problem 6.11
    P1414 又是毕业季II
    Trie树
  • 原文地址:https://www.cnblogs.com/jpfss/p/11582669.html
Copyright © 2011-2022 走看看