测试类不支持多线程情况

单元测试@Test并不支持多线程测试;多次运行,其结果要么没有任何输出结果,要么输出不全。

在最后加个Thread.sleep()只是为了让主线程等待子线程执行完后在结束,你也可以给你的子线程加线程状态,等待你子线程执行完毕后结束主线程。

或者加个超时设置,允许子线程执行完:

@Test(timeout = 100) // in case we never get a notification
public void testGivenNewFooWhenIncrThenGetOne() throws Exception {
...

2)单元测试调不通@Async注解:

所以在单元测试中,调用加了@Async注解的方法是调不通的。

因为使用@Async注解会导致Spring容器为包含@Async注解的类重新生成一个代理子类,然后用子线程去异步的执行完加@Async注解的方法任务。所以在单元测试中,主线程早都结束了,子线程还在执行,故而得不到结果。

如果使用postman或者页面的请求,因为这种情况中,主线程一直是开启着的状态,所以@Async注解可以生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值