如何在junit中测试自己的写的逻辑或者自己设计的架构能否扛得住一定的并发环境呢?其实这种问题挺简单的,但是往往好多人容易忽略这一点,不多说,直接上代码。
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.concurrent.CountDownLatch;
@RunWith(SpringJUnit4ClassRunner.class)//使用junit4进行测试
@ContextConfiguration({"classpath*:spring/applicationContext.xml"})
public class TestDemo {
//模拟请求的参数
private static final Stringdemo ="u001";
//模拟短时间内的并发请求量
private static final int threadNum =200;
//倒计时器,用于模拟高并发
private CountDownLatchcdl =new CountDownLatch(threadNum);
@Before
public void init(){
//执行前准备
}
@Test
public void testMain(){
for (int i =0; i< threadNum; i++) {
new Thread(new UserRequest()).start();
//倒计时计数一次
cdl.countDown();
}
try{
//阻塞主线程,等待所有的子线程执行完毕
Thread.currentThread().join();
}catch (Exception e){
e.printStackTrace();
}
}
private class UserRequestimplements Runnable{
@Override
public void run() {
try {
cdl.await();
}catch (InterruptedException e) {
e.printStackTrace();
}
//此处执行对应的逻辑
}
}
}
这其实就是一个简单的junit单元测试,但是却非常好用,里面代码看起来比较少,但是却包含了,java关于多线程操作的一些东西,比如CountDownLatch类的使用方法以及各种特性, 线程中的join()方法的使用