sfdx force:apex:test:run仅包括sfdx命令中包含的那些测试的覆盖范围

问题描述

我有一个拥有大约530个测试类的组织。我目前正在一个nodejs项目中,该项目使用sfdx命令在组织中运行测试,然后生成代码覆盖率报告,对其进行分析和分类,以便我可以使用分类数据以查找哪些测试类/方法覆盖哪些顶点类行。

由于测试类的数量非常大,并且如果记录超过10K,则Salesforce会删除覆盖率数据(发生这种情况是因为此类类,触发器和测试类的数量如此之多),所以我尝试实现要进行批量测试运行。

可以说该批次包含Test_1,Test_2,.....,Test_10。 我正在使用的命令如下。

library(ggplot2)
a=c(1,2,3,4,5)
b=c(1,5)
dd=data.frame(a,b)

G <-ggplot(dd)+
  geom_line(aes(x=a,y=b),color = 'blue') + # need to include aes() designation here
  labs(x="Depth (m)",y=expression("nss SO" ["4"] ^"2-"*" (ppb)"))
G

这里的问题是

  1. 命令将阻塞脚本,直到测试完成并计算出总覆盖率为止。
  2. 完成后未返回testRunId。
  3. 在以后的每次运行中,以前的测试覆盖率数据也将包含在输出中,这是不需要的。

反正有没有运行该命令以便仅为批处理中包含的测试提供覆盖率数据?

解决方法

尝试将其拆分为多命令,这样您将获得什么?

  1. 每次为小单元完成的脚本锁定
  2. 结果可以单独存储和分析每个类测试

3.先前的测试覆盖率数据不包含在输出中。每个命令计算其测试代码覆盖率

 sfdx force:apex:test:run --codecoverage -r json --classnames "Test_1" -u testOrg --outputdir path/to/folder/Test_1

sfdx force:apex:test:run --codecoverage -r json --classnames "Test_2" -u testOrg --outputdir path/to/folder/Test_2

sfdx force:apex:test:run --codecoverage -r json --classnames "Test_10" -u testOrg --outputdir path/to/folder/Test_10