利用JUNIT4,GroboUtils进行多线程测试
多线程编程和测试一直是比较难搞的事情,特别是多线程测试。只用充分的测试,才可以发现多线程编码的潜在BUG。下面就介绍一下我自己在测试多线程并发程序时用的一个比较简单好用的测试工具类库。即JUNIT4和GroboUtils。
废话不多说,把代码贴出来,大家一看就明白了。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;
import net.sourceforge.groboutils.junit.v1.TestRunnable;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MutiThreadTest {
//此处可以声明一些公共变量
static ApplicationContext context = null;
static String[] path = new String[] { "" };
static Map<String, String> countMap = new Hashtable<String, String>();
static Map<String, String> countMap2 = new Hashtable<String, String>();
static Set<String> countSet = new HashSet<String>();
static List<String> list = new ArrayList<String>();
@Before
public void setUp() throws Exception {
context = new ClassPathXmlApplicationContext(path);
}
@After
public void tearDown() throws Exception {
context = null;
}
/**
* JUNIT会运行这个方法,是主线程
*/
@Test
public void testThreadJunit() throws Throwable {
//TestRunnable,实例化自定义的7个线程
TestRunnable tr1, tr2, tr3, tr4, tr5, tr6, tr7;
tr1 = new ThreadA();
tr2 = new ThreadB();
tr3 = new ThreadC();
tr4 = new ThreadD();
tr5 = new ThreadE();
tr6 = new ThreadF();
tr7 = new ThreadG();
//必须声明为一个数组,把该数组当参数传递给 MultiThreadedTestRunner
TestRunnable[] trs = { tr1, tr2, tr3, tr4, tr5, tr6, tr7 };
//不需改动
MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs);
//执行MTTR和7线程
mttr.runTestRunnables();
}
/**
* 要运行多线程,首先要实现自定义的线程</br>
* 如下我定义了A,B,C,D,E,F,G七个线程</br>
* 注意:自定义线程必须要继承TestRunnable</br>
* 并且覆盖runTest()方法
*
*/
private class ThreadA extends TestRunnable {
@Override
public void runTest() throws Throwable {
//线程要调用的方法或者要执行的操作
myCommMethod2();
}
}
private class ThreadB extends TestRunnable {
@Override
public void runTest() throws Throwable {
myCommMethod2();
}
}
private class ThreadC extends TestRunnable {
@Override
public void runTest() throws Throwable {
myCommMethod2();
}
}
private class ThreadD extends TestRunnable {
@Override
public void runTest() throws Throwable {
myCommMethod2();
}
}
private class ThreadE extends TestRunnable {
@Override
public void runTest() throws Throwable {
myCommMethod2();
}
}
private class ThreadF extends TestRunnable {
@Override
public void runTest() throws Throwable {
myCommMethod2();
}
}
private class ThreadG extends TestRunnable {
@Override
public void runTest() throws Throwable {
myCommMethod2();
}
}
/**
* 线程要调用的方法。在此方法中</br>
* 实现你的多线程代码测试。
* @throws Exception
*/
public void myCommMethod2() throws Exception {
System.out.println("线程===" + Thread.currentThread().getId() + "执行myCommMethod2操作开始");
for (int i = 0; i <10; i++) {
int a = i*5;
System.out.println(a);
}
System.out.println("线程===" + Thread.currentThread().getId() + "执行myCommMethod2操作结束");
}
}
参考文章:
[url]
http://www.ibm.com/developerworks/cn/java/j-lo-test-multithread/index.html?ca=drs-
[/url]
[url]
http://groboutils.sourceforge.net/index.html[/url]
分享到:
相关推荐
Java多线程Junit测试包,支持多线程测试.
介绍有关Junit和多线程测试的问题。Junit和许多开源软件项目集成在一起,但是Junit执行多线程的单元测试有一些问题。这篇文章介绍Junit的一个扩展类库———GroboUtils
JUNIT多线程测试
spring4+junit4.8 +多线程TheadTool
这是一个junit4测试的jar包,copy进去就可用
Junit单元测试Junit单元测试Junit单元测试Junit单元测试
Junit单元测试Junit单元测试Junit单元测试Junit单元测试
在Eclipse中使用JUnit4进行单元测试!
junit4 jar包 Java单元测试框架绿色免费版.zip
junit单元测试junit单元测试junit单元测试
junit3 junit4 api,单元测试的利器
JUnit4利用反射机制测试类的私有成员
针对Calculate类 (含加减乘除4个方法),使用junit4进行简单的单元测试例子,含注释~
Unit是一个Java语言的单元...Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
Junit4 Test 单元测试 Junit4 Test 单元测试 Junit4 Test 单元测试
junit4测试源码,看浪曦JUNIT4笔记
junit4单元测试工具
junit测试测试junit测试测试junit测试测试junit测试测试
基于java的开发源码-junit4 jar包 Java单元测试框架绿色免费版.zip 基于java的开发源码-junit4 jar包 Java单元测试框架绿色免费版.zip 基于java的开发源码-junit4 jar包 Java单元测试框架绿色免费版.zip 基于java的...
单元测试利器JUnit4