Bazel中‘tests too big’警告含义及相关疑问解答
Bazel测试提示“size is too big”的含义与影响
1. 这里的size指代什么?
Bazel里的size不是指测试文件的体积,而是测试用例的规模标识,用来标记测试的预期运行时长、CPU/内存资源消耗量级。官方默认定义了四类size:
small:预期运行时长<1分钟,资源消耗极低medium:预期运行时长<5分钟large:预期运行时长<15分钟enormous:预期运行时长>15分钟
你可以通过测试规则的test_size属性为测试指定对应类别。
2. “size is too big”具体指什么?
这个提示说明:部分测试的实际运行表现(时长/资源消耗),超出了它被标记的size类别对应的默认阈值。比如一个被标记为small的测试,实际运行了2分钟,就会触发该警告。
3. “过大”会带来哪些影响?
- 测试调度不合理:Bazel会根据size分配并行执行的资源和队列,错误的size标记会导致资源调度失衡,拖慢整体测试套件的执行速度。
- 测试超时失败:Bazel会为不同size的测试设置默认超时时间(比如
small测试默认超时1分钟),如果实际运行超出该时间,测试会被强制终止,直接判定失败。 - 资源浪费:如果测试被标记为远超实际需求的size(比如实际是
small却标成large),Bazel会预留更多资源,造成服务器资源闲置。
解决方法
执行以下命令可以查看具体触发警告的测试用例:
bazel test //... --test_verbose_timeout_warnings
之后你可以选择:
- 调整测试的
test_size属性,匹配其实际运行规模 - 优化测试代码,减少运行时长或资源消耗
内容的提问来源于stack exchange,提问作者pdeva
相关产品推荐
相关产品推荐

