代码覆盖率失败 你的代码覆盖率是 72%。您需要至少 75% 的覆盖率才能完成此部署
Posted
技术标签:
【中文标题】代码覆盖率失败 你的代码覆盖率是 72%。您需要至少 75% 的覆盖率才能完成此部署【英文标题】:Code Coverage Failure Your code coverage is 72%. You need at least 75% coverage to complete this deployment 【发布时间】:2020-07-28 07:16:03 【问题描述】:我正在开发一个新项目,其中客户预先存在的生产代码的覆盖率低至 72%,因此我无法部署在沙盒中完成的任何工作。
错误:
代码覆盖失败 你的代码覆盖率为 72%。您需要至少 75% 的覆盖率才能完成此部署。
有人对如何增加代码覆盖率有建议吗?
【问题讨论】:
为未发现的代码编写测试。或者只为您在部署时更改的类指定测试。 我的问题是将测试用例投入生产。如果所有更改集选项都失败,我将如何部署它? @TemporaryFix 当你部署到 prod 时,所有本地测试都会运行 谢谢先生们的建议确实有帮助 【参考方案1】:-
在生产环境中编译所有类
运行所有单元测试(本地测试,无需运行托管软件包附带的测试)
转到开发者控制台,查询编辑器,勾选底部的工具 API 复选框
运行此查询
SELECT ApexClassorTrigger.Name, NumLinesCovered, NumLinesUncovered
FROM ApexCodeCoverageAggregate
ORDER BY NumLinesUncovered DESC
LIMIT 10
它应该让您知道哪些类/触发器被覆盖的最少。其中一些将是快速的胜利,花费在创建/改进他们的测试上的时间将为您提供全面覆盖的最佳结果。我的意思是花 1 小时修复覆盖 100 行中有 60 行的课程比修复 4 行中有 2 行的课程要好。在沙盒中工作,直到你 > 75%
(有可能您的沙盒已过时,有人直接在生产环境中创建了验证规则、必填字段等,而无需部署......这就是为什么我要求在 prod 中编译和运行所有测试)
如果有不再使用的类/方法并且删除它们是安全的——你不能用变更集来做,你需要一个特殊的破坏性部署。现在,您可以将它们注释掉并部署该版本。只需检查这是否对您有益(我的意思是,摆脱旧代码当然很好,更易于维护......但如果它恰好被测试覆盖,您会在脚下开枪)
将创建/更新的测试类添加到变更集,您应该能够将其部署到产品。
【讨论】:
当我运行它时,我得到了异常:INVALID_TYPE: sObject type 'ApexCodeCoverageAggregate' is not supported。 来自开发控制台?确保选中查询编辑器底部的“工具 API”复选框。从 REST API(例如 workbench.developerforce.com -> Utilities -> REST Explorer)然后/services/data/v50.0/tooling/query?q=SELECT+ApexClassorTrigger.Name,+NumLinesCovered,+NumLinesUncovered+FROM+ApexCodeCoverageAggregate+ORDER+BY+NumLinesUncovered+DESC+LIMIT+10
以上是关于代码覆盖率失败 你的代码覆盖率是 72%。您需要至少 75% 的覆盖率才能完成此部署的主要内容,如果未能解决你的问题,请参考以下文章