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()结束
  具体功能可以由这个引申出来。

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
2月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
366 1
|
2月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
325 0
|
3月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
433 0
|
1月前
|
Java 大数据 Go
从混沌到秩序:Java共享内存模型如何通过显式约束驯服并发?
并发编程旨在混乱中建立秩序。本文对比Java共享内存模型与Golang消息传递模型,剖析显式同步与隐式因果的哲学差异,揭示happens-before等机制如何保障内存可见性与数据一致性,展现两大范式的深层分野。(238字)
63 4
|
1月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
93 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
1月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
237 3
|
1月前
|
缓存 安全 Java
如何理解Java中的并发?
Java并发指多任务交替执行,提升资源利用率与响应速度。通过线程实现,涉及线程安全、可见性、原子性等问题,需用synchronized、volatile、线程池及并发工具类解决,是高并发系统开发的关键基础。(238字)
198 4
|
2月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
220 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
4月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
354 83