天天看點

多線程測試工具groboutils的使用

  引入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);

// 高并發測試

public void testgetequipeventalertlistbypage() throws throwable {

equipmentquerybean equipmentquerybean = new equipmentquerybean();

// 生成所有測試線程

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 equipmentquerybean equipmentquerybean;

public faultservicethread(ifaultservice faultservice,

equipmentquerybean equipmentquerybean) {

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;

最新内容請見作者的github頁:http://qaseven.github.io/