我有一个组织,它有大约530个测试类。我目前正在开发一个nodejs项目,该项目使用sfdx命令在组织中运行测试,然后生成代码覆盖率报告,对它们进行分析和分类,这样我就可以使用分类的数据来查找哪些测试类/方法覆盖了哪些顶点类行。
由于测试类的数量非常大,如果记录超过10K,salesforce就会删除覆盖率数据(这是因为有大量的类、触发器和测试类(,所以我尝试实现要运行的测试批。
假设该批由Test_1、Test_2、…..、,。。。。。,测试_10。下面给出了我正在使用的命令。
sfdx force:apex:test:run --codecoverage -r json --classnames "Test_1,Test_2,.....,Test_10" -u testOrg --outputdir path/to/folder
这里的问题是
- 命令阻止脚本,直到测试完成并计算出总覆盖率
- 完成后不返回testRunId
- 对于每个后续运行,先前的测试覆盖率数据也包含在输出中,这是不需要的
是否可以运行该命令,以便只为批次中包含的测试提供覆盖率数据?
尝试将其分离为多个命令,这样你会得到什么?
- 每次为小单元锁定脚本
- 结果可以单独存储和分析每个类别的测试
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
不知道它是否仍然相关,但有一个解决方案。
您可以覆盖SFDX_MAX_QUERY_LMIT环境变量的值,并检索所需的所有记录
发件人https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_dev_cli_env_variables.htm:
SFDX_MAX_QUERY_LMIT
CLI命令返回的Salesforce记录的最大数目
默认值为10000。
示例:
SFDX_MAX_QUERY_LIMIT=200000