仅在调用回调时才使单元测试通过

时间:2015-08-28 17:38:58

标签: c# unit-testing nunit

我正在尝试对一些代码进行单元测试,以确保调用回调,但似乎即使没有“Assert” - 调用它也会传递。考虑下面的代码示例:

public void Show_ShowSomeAdFormat_CallbackShouldBeInvoked()
{
    AdManager adManager = new AdManager();

    adManager.Show<VideoTestAdFormat>((response) =>
    {
        //Assert.Pass(); <--- With or without this, the test will pass. 
        //I need it to only pass if it reaches this. How is it done?
    });
}

如果您阅读评论,我认为您将了解我的目标。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用已捕获的bool

public void Show_ShowSomeAdFormat_CallbackShouldBeInvoked()
{
    AdManager adManager = new AdManager();
    bool callbackInvoked = false;
    adManager.Show<VideoTestAdFormat>((response) => callbackInvoked = true);
    // If the callback is invoked asynchronously,
    // you'll need a way to wait here for Show to complete.
    Assert.IsTrue(callbackInvoked);
}

修改

如果您正在使用.NET 4,那么Show可能会Task返回Show完成ManualResetEvent完成工作。在早期的.NET版本中,您可以返回Show。 &#34;返回&#34;可以是返回值,也可以是带有out参数的rand()重载。