1.1.0版本Runner运行测试用例卡住 单feature运行报索引越界异常
1.1.0版本Runner测试运行异常问题解决方案
- 并发卡住问题根因:1.1.0版本Runner的异步日志打印模块存在死锁缺陷,服务返回200响应后,日志刷写线程和用例执行线程竞争锁资源导致进程挂起,只能手动终止。
- 单场景执行数组越界根因:该版本的用例上下文存储逻辑未做线程安全控制,并行执行时多线程修改共享的List类型上下文对象,会导致集合内部状态异常,后续即使单场景执行,残留的异常状态也会触发下标越界错误,你遇到的
java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 3就是该问题的典型表现。 - 解决方案:
- 优先升级Runner到1.1.2及以上稳定版本,上述两个缺陷在该版本已被官方修复,不需要修改业务用例代码即可解决问题
- 若暂时无法升级版本,可做临时适配:关闭测试用例并行执行配置,将Maven测试插件的并行执行参数设为
none,每次执行测试前执行mvn clean命令清空所有缓存文件,避免异常状态残留
- 异常排除:如果按照上述操作后仍出现数组越界报错,可排查你自己编写的测试用例中是否存在对长度为3的数组/List取下标3的硬编码操作,排除业务逻辑错误。
内容的提问来源于stack exchange,提问作者Dhevendran Natarajan
相关产品推荐
相关产品推荐

