【问题标题】:Code Coverage Failure Your code coverage is 72%. You need at least 75% coverage to complete this deployment代码覆盖率失败 你的代码覆盖率是 72%。您需要至少 75% 的覆盖率才能完成此部署
【发布时间】:2020-07-28 07:16:03
【问题描述】:

我正在开发一个新项目,其中客户预先存在的生产代码的覆盖率低至 72%,因此我无法部署在沙盒中完成的任何工作。

错误:

代码覆盖失败 你的代码覆盖率为 72%。您需要至少 75% 的覆盖率才能完成此部署。

有人对如何增加代码覆盖率有建议吗?

【问题讨论】:

  • 为未发现的代码编写测试。或者只为您在部署时更改的类指定测试。
  • 我的问题是将测试用例投入生产。如果所有更改集选项都失败,我将如何部署它?
  • @TemporaryFix 当你部署到 prod 时,所有本地测试都会运行
  • 谢谢先生们的建议确实有帮助

标签: salesforce code-coverage apex salesforce-lightning


【解决方案1】:
  1. 在生产环境中编译所有类
  2. 运行所有单元测试(本地测试,无需运行托管软件包附带的测试)
  3. 转到开发者控制台,查询编辑器,勾选底部的工具 API 复选框
  4. 运行此查询

    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
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 2012-06-30
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
相关资源
最近更新 更多