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

被折叠的 条评论
为什么被折叠?



