我正在测试,必须达到一定程度的代码覆盖率。我在事件调用的陈述中遇到问题,代码覆盖率始终显示部分被触及的情况,因此影响了我的总体覆盖率。
如何使它计为全部覆盖
我已经看到了一些相同的问题,但是没有一个问题能解决这样的小问题(或者至少看起来很小的事情)。
下面给出了代码
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);
}
}
答案 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时,另一个在添加事件处理程序的位置进行测试。