部分接触的代码覆盖区域 VS 2017

partially touched code coverage area VS 2017

我正在进行测试,必须达到一定的代码覆盖率水平。我在事件调用的声明中有问题,代码覆盖率总是显示部分触摸的情况,因此影响了我的整体覆盖率。

如何才能算作全覆盖

我看到了一些相同的问题,但 none 有解决这么小的事情(或至少看起来很小的事情)的确切答案。

代码如下

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);
    }
}

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

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 何时为空,另一个测试您添加了事件处理程序。