`
xidajiancun
  • 浏览: 455367 次
文章分类
社区版块
存档分类
最新评论

Java Web 并发单元测试(2)

 
阅读更多

使用GroboUtils进行简单并发单元测试,实现测试和监控和单个线程执行的控制,这里展示简单案例的测试过程:

1、建立要测试的线程TestRunnable1

/**
 * 
 */
package com.dtsz.groboTest;

import net.sourceforge.groboutils.junit.v1.TestRunnable;

/**
 * @author xiaoli
 *
 */
public class TestRunnable1 extends TestRunnable {

	private int i;
	
	private long sleepTime;
	
	public TestRunnable1(int i ,long sleepTime) {
		super();
		this.i = i;
		this.sleepTime = sleepTime;
	}



	/* (non-Javadoc)
	 * @see net.sourceforge.groboutils.junit.v1.TestRunnable#runTest()
	 */
	@Override
	public void runTest() throws Throwable {
		// TODO Auto-generated method stub
		System.out.println(i+"线程正在跑…………");
		this.delay(sleepTime);
		System.out.println(i+"线程正要走完…………");
	}

}

2、建立监控的线程,每个监控对应一个线程,也可以一个监控监控整个测试过程,需要传入监控的线程对象。

/**
 * 
 */
package com.dtsz.groboTest;

import net.sourceforge.groboutils.junit.v1.TestMonitorRunnable;
import net.sourceforge.groboutils.junit.v1.TestRunnable;

/**
 * @author xiaoli
 *
 */
public class TestMonitorRunnable1 extends TestMonitorRunnable {

	
	private int i;
	
	private TestRunnable t;
	
	public TestMonitorRunnable1(int i,TestRunnable t) {
		super();
		this.i = i;
		this.t = t;
	}
	/* (non-Javadoc)
	 * @see net.sourceforge.groboutils.junit.v1.TestMonitorRunnable#runMonitor()
	 */
	@Override
	public void runMonitor() throws Throwable {
		System.out.println(i+"线程监控正在跑…………状态:"+t.isDone());
	}

}

3、建立主测试类进行并发单元测试,这里只有简单数据打印,具体情况传入数据进行测试,比如Web项目中需要在setUp()中部署好相关的环境等:

/**
 * 
 */
package com.dtsz.groboTest;

import junit.framework.TestCase;
import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;
import net.sourceforge.groboutils.junit.v1.TestMonitorRunnable;
import net.sourceforge.groboutils.junit.v1.TestRunnable;

import org.junit.Test;

/**
 * @author xiaoli
 *
 */
public class MainTest1 extends TestCase{

	@Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
		super.setUp();
		System.out.println("setUp()数据准备"); 
	}

	@Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		super.tearDown();
		System.out.println("tearDown()结束"); 
	}
	
	@Test
	public void test1() throws Throwable {
		
		int count = 2;
		
		long time = 0;
		
		TestRunnable[] tr = new TestRunnable[count];
		TestMonitorRunnable [] trm = new TestMonitorRunnable[count];
		for(int i = 0;i<count;i++) {
			TestRunnable1 t = new TestRunnable1(i,(i+1)*time);
			TestMonitorRunnable1 m = new TestMonitorRunnable1(i,t);
			tr[i] = t;
			trm[i] = m;
		}
		
		MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(tr,trm);
		
		//没有在该时间内完成的线程将会被杀掉
		mttr.runTestRunnables();
	}

	
	
}

测试结果:监控器每隔几个毫秒会进行实时运行,知道整个单元测试结束:

setUp()数据准备
1线程监控正在跑…………状态:false
0线程监控正在跑…………状态:false
0线程正在跑…………
1线程正在跑…………
1线程监控正在跑…………状态:false
0线程监控正在跑…………状态:false
0线程正要走完…………
1线程正要走完…………
1线程监控正在跑…………状态:false
0线程监控正在跑…………状态:false
1线程监控正在跑…………状态:false
0线程监控正在跑…………状态:false
1线程监控正在跑…………状态:false
0线程监控正在跑…………状态:false
1线程监控正在跑…………状态:false
0线程监控正在跑…………状态:true
1线程监控正在跑…………状态:true
tearDown()结束


具体功能可以由这个引申出来。

分享到:
评论

相关推荐

    jmeter 测试工具 使用java自测 并发测试 环境测试 压力测试

    JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。 1.能够对HTTP和FTP服务器进行压力和...

    jakarta-jmeter-2.1.1(JAVA Web并发测试)

    比较好,刚从同事那里得到的。给大家分享一下...

    Java并发编程实战

    第1章 简介 1.1 并发简史 ...第12章 并发程序的测试 第四部分 高级主题 第13章 显式锁 第14章 构建自定义的同步工具 第15章 原子变量与非阻塞同步机制 第16章 Java内存模型 附录A 并发性标注 参考文献

    Java-并发(Concurrent)编程

    资源概要:1,多线程;2,synchronized;3,volatile;4,多线程在JVM中的实现原理剖析 导语: 什么是多线程? 多线程(multithreading)是指从软件或者硬件上实现多个线程并发执行的...线程池案例-Web容器-压力测试

    Java 并发编程实战

    前 言 第1章 简介 1.1 并发简史 ...第12章 并发程序的测试 第四部分 高级主题 第13章 显式锁 第14章 构建自定义的同步工具 第15章 原子变量与非阻塞同步机制 第16章 Java内存模型 附录A 并发性标注

    基于Java实现的Web服务器与测试工具开发.zip

    基于Java编程语言,利用http socket通信技术,写一个小型的web服务器与一个爬虫的测试工具,来对比分析所写的服务器获取到的页面源码与从tomcat获取的相似度。 (1)小型web服务器: 1)支持客户端的网页请求,进行...

    怎样实现并发

    并发的应用,Apache JMe是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、...

    jmeter压力测试

    用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以...

    javaweb曲线源码-JMeter:利用JMeter对Web应用进行自动化压力测试。JAVA编写,通过参数动态改变线程数,通过模拟并发数测试

    Jmeter是一个优秀的基于java开发的测试工具,主要用来测试web应用的性能。 具体可以参考: 用法 利用JMeter录制测试脚本,并设定参数 生成测试脚本jmx 在java程序中修改线程数,并引用脚本 自动化运行,并收集结果...

    java源码包2

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的...

    JAVA上百实例源码以及开源项目

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    web服务器压力测试软件

    专门用于测试局域网内开发的WEB应用程序,可以测试java开发程序,可适用于B/S架构,C/S架构

    JAVA上百实例源码以及开源项目源代码

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    java源码包---java 源码 大量 实例

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    java开源包11

    j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF...

    java开源包6

    j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF...

    java开源包4

    j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF...

    java开源包9

    j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF...

    java开源包101

    j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF...

Global site tag (gtag.js) - Google Analytics