部分接触的代码覆盖区域 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
何时为空,另一个测试您添加了事件处理程序。
我正在进行测试,必须达到一定的代码覆盖率水平。我在事件调用的声明中有问题,代码覆盖率总是显示部分触摸的情况,因此影响了我的整体覆盖率。
如何才能算作全覆盖
我看到了一些相同的问题,但 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
何时为空,另一个测试您添加了事件处理程序。