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/

相关文章
|
1月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
223 0
|
1月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
265 63
|
4月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
154 3
|
6月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
2月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
118 0
|
2月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
2月前
|
缓存 NoSQL Java
Java Web 从入门到精通之苍穹外卖项目实战技巧
本项目为JavaWeb综合实战案例——苍穹外卖系统,涵盖Spring Boot 3、Spring Cloud Alibaba、Vue 3等主流技术栈,涉及用户认证、订单处理、Redis缓存、分布式事务、系统监控及Docker部署等核心功能,助你掌握企业级项目开发全流程。
259 0
|
2月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
126 0
|
4月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
214 4
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件

热门文章

最新文章