【问题标题】: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 相关

标签: c# sonarqube


【解决方案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 的实现,如果没有找到覆盖信息,则覆盖默认设置为零。

我认为你的案子可能属于这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2010-10-14
    相关资源
    最近更新 更多