Cargo提示test failed, to rerun pass '--lib'是什么意思?
Cargo测试报错
error: test failed, to rerun pass '--lib'相关问题解答 提示的具体含义
这条提示不是强制要求你必须加--lib才能重跑测试,只是Cargo的场景化指引:当你的项目存在多个可测试target(包括库、二进制、集成测试、示例代码等),且仅库(lib)的测试用例执行失败时,Cargo会给出该提示,告诉你可以加--lib参数仅重跑库的测试,跳过其他无问题的target测试,减少重跑等待时间。
Cargo是否会缓存测试结果
Cargo默认会缓存测试结果:它会追踪测试关联的源代码、依赖、编译参数、feature配置等信息,如果以上内容没有发生变更,已经执行通过的测试不会重复运行,直接返回成功状态,只有失败的测试、或关联内容有变更的测试才会被重新执行。
加--lib参数后无特殊效果的原因
有三种常见情况会导致该现象:
- 你的项目是纯库项目,本身不存在其他可测试target,加不加
--lib执行的测试范围完全一致,自然看不出区别 - 你添加
--lib重跑时,已经修复了之前的测试问题,或测试缓存已经失效,执行结果和全量跑测试一致 - 你执行的命令本身已经通过
--features等参数限定了和上次失败时完全一致的配置,且没有修改代码,重跑只会重新执行之前失败的用例,加不加--lib的差异也不明显
提示是否属于误导性bug
该提示是Cargo的正常功能设计,不属于bug,对多target项目的开发者可以起到提升重跑效率的作用。只是对纯库项目的新用户而言,表述容易产生「必须加参数才能重跑」的误解,属于体验优化空间。
内容的提问来源于stack exchange,提问作者spechter
相关产品推荐
相关产品推荐

