Junit单元测试时碰上了多线程问题
**今天在做多线程功能的时候,用Junit做测试的时候发现,其他的线程默默的跑了一会就直接不见了,检查了半天发现代码也没有出问题,也没有异常,就是莫名其妙的不见了!**
**哇!又是一个坑!!**
**然后屁颠屁颠的去查了一下问题,发现Junit根本就不支持多线程,底层的代码在跑完自己之后,直接就关闭了,根本就不管别的线程,所以其他的线程,可能跑到半路上就直接被干掉了ε=ε=ε=(~ ̄▽ ̄)~坑。**
主要是junit最后会调用System.exit()方法,在主线程结束后直接结束jvm,所以当然直接GG
最后呢也有一些解决办法,讲个最简单的办法吧
在运行的junit方法下直接把junit运行的方法休眠了用Thread.sleep(xx)(时间自己定)
import org.junit.Test;
public class Test01 {
@Test
public void Demo(){
Thread t = new Thread01();
Thread t2 = new Thread02();
t.start();
t2.start();
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
**当然如果有需求可以去使用CountDownLatch工具类,让主线程阻塞**
甚至很多大神直接修改junit的源码....
有兴趣的大佬的可以去尝试一下,因为做测试用我就怎么方便怎么来了 = 0=