- 浏览: 2469497 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (574)
- Book (62)
- Architecture (6)
- Java (39)
- Taobao (41)
- Distributed (4)
- Life (72)
- Database (7)
- Spring (16)
- Photography (15)
- Bicycle (41)
- Test (20)
- jBPM (8)
- Business (12)
- Movie (3)
- Ajax (15)
- Code (7)
- Eclipse (96)
- VIM (2)
- Music (6)
- Groovy (10)
- AutoHotKey (3)
- Dorado (10)
- Maven (7)
- Scrum (5)
- English (20)
- Financial (12)
- OSGi (3)
- Other (4)
- Tool (6)
- Browser (1)
- PPT (1)
- Project Management (4)
- Agile (6)
- Nosql (1)
- Search engine (6)
- Shell (2)
- Open Source (4)
- Storm (10)
- Guava (3)
- Baby (1)
- netty (1)
- Algorithm (1)
- Linux (1)
- Python (2)
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询
在junit下, 很难对多线程的代码进行测试, 因此需要借助其他的方式, 比如Executor service框架. 最近要对一个监控类的输出情况写一个测试, 简单的跑一下输出格式是否跟预期一致.我这里借助了ThreadPoolExecutor+CompletionService. 即在结束前, 需要从线程池中拿到最后的执行结果. 我觉得多线程测试模式都应该是类似的, 备忘一下
public class MonitorHelperTest { private Worker[] workers; ExecutorService pool; CompletionService<Boolean> completionPool; List<Future<Boolean>> futures; static int count = 100; static int countPreThread = 1000; private static class Worker implements Callable<Boolean> { @Override public Boolean call() throws Exception { for (int i = 0; i < countPreThread; i++) { Action action = Action.values()[i % Action.values().length]; doFoo(i, action); } return true; } private void doFoo(int i, Action action) { long begin = MonitorHelper.addFetchAndGetNow(action, 1); try { foo(i); MonitorHelper.addTime(action, begin); MonitorHelper.addSuccess(action); } catch (Exception e) { MonitorHelper.addFailure(action); } } } @Before public void before() { pool = Executors.newFixedThreadPool(count, new ThreadFactory() { @Override public Thread newThread(Runnable r) { return new Thread(r, "worker"); } }); completionPool = new ExecutorCompletionService<Boolean>(pool); futures = new ArrayList<Future<Boolean>>(count); workers = new Worker[count]; for (int i = 0; i < count; i++) { workers[i] = new Worker(); } } @Test public void test() throws Exception { for (Worker worker : workers) { futures.add(completionPool.submit(worker)); } for (int i = 0; i < count; i++) { completionPool.take().get(); } } /** * @throws Exception * */ private static void foo(int i) throws Exception { if (i % 3 == 0) { TimeUnit.MILLISECONDS.sleep(50); throw new Exception(); } else { TimeUnit.MILLISECONDS.sleep(100); } } }
发表评论
-
Effective Unit Test:代码面前并非人人平等
2012-02-05 15:38 1702这里的观点非常值得探讨, 所有的产品代码就像是一项投资, 有些 ... -
使用Guava Supplier Mock Datetime
2012-02-04 23:35 2801通过下面的例子了解Guava Supplier的用法.在做单元 ... -
补习一下EasyMock
2010-04-28 09:18 5046最近有时间, 再温习一下easymock相关的东东 http ... -
结合使用Dummy, InjectTo, PartialMock的单元测试
2009-12-24 21:21 1481结合使用Dummy, InjectTo, PartialMoc ... -
使用代码方式运行指定单元测试类及方法
2009-12-17 08:57 1768记一下, 备忘 private void runT ... -
JunitCore
2009-12-15 01:03 0JUnitCore core = new JUnitCore( ... -
修改dbunit的几个bug兼对dbunit进行扩展
2009-12-08 20:51 3194最近在对unitils进行扩展, 主要是数据库这块儿的内容, ... -
让Unitils实现excel下的多数据源支持
2009-12-03 21:02 3944说明:这里的多数据源需要利用spring中配置的多个DataS ... -
unitils中spring module初始化源码解读
2009-12-03 20:32 2655spring module的初始化还算简单, 但是熟悉里面的原 ... -
解决unitils中的dbunit使用spring中定义的多数据源
2009-12-02 20:07 3172最近在研究unitils, dbunit来适应目前的单元测试. ... -
Unitils 学习笔记
2009-11-27 19:44 7789源码部分 EasyMock相关的 有三个注解: Mock ... -
使用classloader自定义测试套件TestSuite
2009-10-21 19:04 2341junit自带了一个suite用来将多个test case放在 ... -
《单元测试之道Java版——使用JUnit》读书笔记
2009-06-09 23:06 3419这个可能是到目前为止 ... -
JunitRunner定制之模仿@Before对属性进行初始化
2009-02-12 21:54 2542在测试的过程中, 会用到一些模拟数据, 希望在每次调用测试方法 ... -
打造自己的单元测试容器——Junit Runner扩展举例
2009-02-05 23:40 6217最近对java的annotation和junit的Runner ... -
junit4源码浅析
2009-02-05 21:12 7349junit3和junit4是两个非常不同的版本, 不能简单的理 ... -
最近单元测试中写的一个Assert
2009-01-15 22:03 2917该类提供的assert方法主要针对数据库的单元测试中, 使用S ... -
用于生成mock模型对象Setter代码工具类
2009-01-12 10:35 1800最近写的一个工具类, 用来生成mock的javabean对象, ... -
EasyMock最佳实践
2008-12-20 20:43 30116推荐easymock入门贴: 窥探 ... -
JUnit 4新特性笔记
2008-12-11 08:47 2929测试任何可能的错误。 ...
相关推荐
在进行多线程测试时,我们可能会关注以下方面: 1. 性能测试:测量不同线程数量对程序整体性能的影响。 2. 线程安全测试:检查代码是否正确地处理了多线程环境下的数据访问。 3. 资源消耗测试:分析多线程运行时...
标题"WEBAPI多线程并发测试工具"指出,这是一个专门针对Web API进行多线程并发测试的工具。Web API通常指的是应用程序接口,它们允许不同的服务之间进行通信,以实现数据交换和功能整合。多线程并发测试则是验证在多...
一、多线程测试 多线程是指在一个进程中同时执行多个独立的线程,以提高程序的执行效率和响应速度。在测试环境中,我们关注的是线程间的同步、竞争条件、死锁等问题,以及多线程环境下程序的稳定性和性能。这包括: ...
本篇将深入探讨如何在JUnit中进行多线程测试,以及它的重要性。 首先,理解为什么需要进行多线程测试。在多线程环境中,不同的线程可能同时访问共享资源,这可能导致竞态条件、死锁或数据不一致等问题。因此,我们...
本主题聚焦于Delphi 7中实现的多线程测试,特别是涉及40个并发线程的情况。Delphi是Embarcadero开发的一款集成开发环境(IDE),它以其高效的Pascal方言——Object Pascal,以及丰富的组件库闻名,适用于创建Windows...
首先,Java多线程测试工具能够模拟大量并发用户对应用程序进行访问,这对于评估和优化系统在高负载情况下的性能至关重要。在互联网时代,服务的稳定性和响应速度直接影响用户体验,因此开发者需要确保系统在面对大...
QT+OpenGL多线程测试是将高性能图形渲染与Qt框架结合的一种技术应用,它通过利用多线程的优势来提升程序的运行效率。在本项目中,开发者采用了2D纹理贴图的方法,使得图像处理和显示更为高效。接下来,我们将深入...
在`mthread`这个压缩包中,可能包含了使用上述技术编写的测试代码示例,你可以通过查看和运行这些代码来更好地理解和学习多线程编程。 总的来说,多线程编程是现代软件开发中的关键技能,无论是在Win32 API、C运行...
这个名为"C#多线程测试程序"的示例项目,旨在帮助开发者更深入地理解C#中如何创建和管理多线程。下面我们将详细探讨C#多线程的相关知识点。 首先,我们要了解什么是线程。线程是操作系统分配CPU时间的基本单位,每...
总的来说,多线程测试程序通过`WaitForSingleObject`和`WaitForMultipleObjects`等API,不仅测试了线程同步的实现,还为理解和优化多线程应用提供了一个实际的平台。对于想要深入学习和提升多线程编程技能的开发者来...
标题"Qt多线程测试代码"暗示了我们将探讨如何在Qt中使用多线程来执行耗时任务,以避免阻塞主线程导致用户界面(UI)无响应。在实际的软件开发中,这通常是提高用户体验的关键策略之一。 描述中提到,"Qt多线程多用于...
这个名为“多线程访问网页测试”的项目,旨在演示如何利用C#的多线程功能来并行处理任务,提高程序执行效率。在这个例子中,程序会生成100个随机数字,并启动多个线程同时对百度搜索引擎进行查询,以统计每个数字的...
本资源主要探讨了如何在JAVA和C++中实现多线程,以及相关的测试和调试技术。 在JAVA中,多线程的实现主要依赖于`Thread`类和`Runnable`接口。开发者可以通过直接继承`Thread`类或实现`Runnable`接口来创建新的线程...
本文将深入探讨如何利用Python进行自动化多线程测试,以及如何在单线程和多线程环境中实现网页登录功能,包括账号密码的自动输入以及邮箱验证码的获取与验证。 首先,让我们了解单线程测试。在Python中,`threading...
在“Thread_test_plus”这个压缩包文件中,可能包含了用于测试多线程实现的代码示例。通过分析这些代码,我们可以学习如何在实际应用中创建、管理和同步线程,例如使用Java的`Thread`类、`ExecutorService`或者C++的...
以下是对"java多线程测试实例"的详细解析: 1. **线程的创建方式** - 实现`Runnable`接口:创建一个类实现`Runnable`接口,然后将其实例传递给`Thread`类的构造函数创建线程。 - 继承`Thread`类:创建一个类直接...
在这个"多线程测试"Demo中,我们可以期待看到以下方面的内容: 1. **线程同步与通信**:可能会包含`synchronized`关键字、`wait()`, `notify()`, `notifyAll()`方法的使用,这些是Java中实现线程间同步和通信的基础...
"testHttp_多线程压力测试_压力测试_"这个标题暗示我们将探讨如何使用Python进行HTTP接口的压力测试,特别是利用多线程和多进程技术来模拟大量并发请求。 首先,让我们了解什么是多线程和多进程。在计算机科学中,...
在使用GroboUtils进行多线程测试时,开发者需要注意以下几点: 1. 设计测试:明确测试目标,确保测试覆盖到多线程交互的关键路径。 2. 使用适当的同步机制:根据需要使用GroboUtils提供的同步工具,避免死锁和竞态...