【发布时间】:2018-12-26 14:44:12
【问题描述】:
我正在进行测试并且必须达到一定的代码覆盖率。我在事件调用的声明中遇到了问题,代码覆盖率总是显示部分接触的情况,因此影响了我的整体覆盖率。
如何才能算作全面覆盖
我已经看到了一些相同的问题,但没有一个确切的答案可以解决这么小的事情(或至少看起来很小的事情)。
代码如下
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);
}
}
【问题讨论】:
-
您正在将事件分配给一个新的委托,但据我所知,没有什么会调用调用事件的函数?我是否遗漏了什么,或者您只是需要在
Assert行之前的单元测试中调用ClassTobeTested.Function1();? -
我编辑了我的问题。所以我不应该把它分配给任何东西或者我是怎么做的吗?
-
该示例的语法看起来不准确。
-
我编辑了它,我只是写了一个例子,说明事情是如何工作的,问题是什么,它不是真正的代码。
-
虽然不是真正的代码,但提供的示例甚至不会编译为委托
Action<T>不接受 0 个参数。提供可用于重现问题的 minimal reproducible example。
标签: c# visual-studio code-coverage xunit