xUnit:如何声明 EventHandler<EventArgs> 类型的其他事件

xUnit: how to Assert other event of types then EventHandler<EventArgs>

我是单元测试的初学者,我已经在网上搜索了几个小时,但我仍然找不到我这个简单问题的答案。

我有一个 class 事件如下:

event Action<ITagData> OnTagHandled

现在我想编写一个单元测试来断言事件是否已引发,但是当我写如下内容时:

Assert.Raises<EventArgs>(handler => m_rssiHander.OnTagHandled += handler,
    handler => m_rssiHander.OnTagHandled -= handler, () => { });

我收到如下错误:

Cannot implicitly convert type System.EventHandler to System.Action

谁能告诉我如何断言 Action<T> 类型的事件?

因为handlerEventHandler<EventArgs>的类型 所以 m_rssiHander.OnTagHandled += handler 将不起作用

您将必须更改: event Action<ITagData> OnTagHandled

event Action<EventArgs> OnTagHandled 让它工作 或任何 child class 的 EventArgs 并继承 ITagData 接口

例如

class TagDataEventArgs: EventArgs, ITagData {}

并将其用作: event Action<TagDataEventArgs> OnTagHandled

并断言:

Assert.Raises<TagDataEventArgs>(handler => m_rssiHander.OnTagHandled += handler,
        handler => m_rssiHander.OnTagHandled -= handler, () => { });

最后我决定这样做:

 bool wasEventRaised = false;
 m_rssiHandler.OnTagHandled += data => { wasEventRaised = true;};

 // Act
 m_rssiHandler.ProcessTag(m_tag);

 // Assert
 Assert.True(wasEventRaised);