VS 2017部分触及的代码覆盖范围

时间:2018-07-18 15:43:28

标签: c# visual-studio code-coverage xunit

我正在测试,必须达到一定程度的代码覆盖率。我在事件调用的陈述中遇到问题,代码覆盖率始终显示部分被触及的情况,因此影响了我的总体覆盖率。

如何使它计为全部覆盖

我已经看到了一些相同的问题,但是没有一个问题能解决这样的小问题(或者至少看起来很小的事情)。

下面给出了代码

public class ClassToBeTested
{
    public event Action myEvent = delegate {};

    public void Function1 ()
    {
        myEvent?.invoke();  //partially touched
    }
}


public class  TestingClass
{
    [Fact]
    public void TestingFunction1()
    {
        bool eventCheck = false;
        ClassToBeTested obj = new ClassToBeTested();
        obj.myEvent += delegate { eventCheck = true ;};
        obj.Function1();
        Assert.True(eventCheck);
    }
}

1 个答案:

答案 0 :(得分:0)

使用null检查进行编码的方式将无法获得更高的覆盖率,因为 myEvent永远不会为null ,因为您已将其初始化为非null:

public event Action myEvent = delegate {};

要获得全面覆盖,您需要:

public event Action myEvent = delegate {};

public void Function1 ()
{
    myEvent.invoke();
}

public event Action myEvent;

public void Function1 ()
{
    myEvent?.invoke();
}

有两个测试:一个测试myEvent为null时,另一个在添加事件处理程序的位置进行测试。