为啥即使单元测试全部通过,我的代码覆盖率也为零?
Posted
技术标签:
【中文标题】为啥即使单元测试全部通过,我的代码覆盖率也为零?【英文标题】:Why my code coverage is zero percent even unit test all passed?为什么即使单元测试全部通过,我的代码覆盖率也为零? 【发布时间】:2021-09-18 19:06:00 【问题描述】:我只用一种方法创建了一个项目,并在其上编写了一个单元测试,并且单元测试在本地通过。但不知道为什么在运行声纳云扫描仪后,它显示的覆盖率为零。
这是测试类
public class DataStructureTest
private readonly DataStructure ds;
public DataStructureTest()
ds = new DataStructure();
[Theory, MemberData(nameof(LongestString_Return_Longest_String_ShouldPass_Data))]
public void LongestString_Return_Longest_String_ShouldPass(string input, string expect)
// Act
var actual = ds.LongestString(input);
// Assert
Assert.Equal(expect, actual);
public static TheoryData<string, string> LongestString_Return_Longest_String_ShouldPass_Data()
return new TheoryData<string, string>
"Hello John", "Hello" ,
"Hi John and Mandy", "Mandy"
;
【问题讨论】:
通过 CI 工具或 Sonarqube 等静态代码分析工具进行代码覆盖测试的问题在于unless the information is captured
(特别是在 CI 期间),您将得到 0%
。我在 TeamCity 有过这种情况,并且仍然与 DevOps 相关
【参考方案1】:
您必须小心这些软件在使用某些术语时的含义。例如,SonarQube 有以下文章:https://community.sonarsource.com/t/sonarqube-and-code-coverage/4725
FAQ 的第一个问题是:
问:从 5.6 迁移到 6.7 后,我的覆盖率显示为 0%,这是为什么? R:由于 SonarQube 6.2 和 MMF-345 565 的实现,如果没有找到覆盖信息,则覆盖默认设置为零。
我认为你的案子可能属于这个。
【讨论】:
以上是关于为啥即使单元测试全部通过,我的代码覆盖率也为零?的主要内容,如果未能解决你的问题,请参考以下文章
即使我添加了测试单元,sonarqube 的覆盖率也始终为 0%