概述
今天使用Junit测试一个带有@Async的业务service,进行debug的时候,业务代码都没执行完,线程就退出了。之前以为是中间抛了什么异常,导致线程提前退出。但是很细心的看了很久,并没有任何异常信息。后面才发现原来是主线程退出了。
由于使用了@Async注解,操作是异步的,主线程里面就执行完退出了。那么Junit这边,整个case就提前走完了。
后面我用了个笨办法,在让主线程sleep一段时间就ok了。
@Test
public void sendMsg() throws Exception {
//1、异步调用业务方法
service.sendMsg("hello");
//2、主线程sleep()
Thread.sleep(100000L);
}