Bazel test未生成bazel-testlogs文件夹的原因及解决咨询
Bazel Test 构建错误与日志生成问题解析及解决
问题原因
bazel test默认逻辑:执行bazel test时,Bazel会先构建目标路径下的所有依赖(含非测试目标),但如果非测试目标出现构建错误,只要测试目标能完成构建并运行,命令就会返回状态码0,且因整体构建流程被打断,不会生成完整的bazel-testlogs目录。--build_tests_only的特殊性:该参数会让Bazel跳过非测试目标的构建,只处理测试相关代码,因此测试目标能正常执行时,会完整生成测试日志目录,但无法检测非测试目标的构建错误。
解决方法
方法1:拆分构建与测试步骤
先单独构建全量目标排查非测试错误,再执行测试生成日志:
# 先构建所有目标,检测非测试相关错误 bazel build //folder-name/... # 构建成功后执行测试,此时不会被非测试错误打断,正常生成日志 bazel test //folder-name/... --cache_test_results=no
若第一步构建失败,直接终止流程;构建成功后,第二步测试会完整生成bazel-testlogs。
方法2:添加--keep_going参数
让Bazel遇到部分构建错误时继续执行测试任务,同时保留错误状态:
bazel test //folder-name/... --cache_test_results=no --keep_going
该参数会让Bazel在非测试目标构建失败时,不中断测试流程,测试完成后生成bazel-testlogs,且最终退出状态码会标记为非0,反映整体存在构建错误。
方法3:结合构建事件日志追踪细节
如果需要同时留存构建错误和测试结果的完整信息,可输出构建事件到文件:
bazel test //folder-name/... --cache_test_results=no --keep_going --build_event_text_file=build_events.log
这样既会生成bazel-testlogs,又能在build_events.log中查看所有构建错误的详细信息。
内容的提问来源于stack exchange,提问作者Mukesh Jha
相关产品推荐
相关产品推荐

