合并后NUNIT异步测试失败



nunit 2.6.4。

我有一个VS/C#项目,该项目引入了异步方法。它有许多这样的测试通过:

    [Test]
    public async void NullProcThrows_Async()
    {
        var keyList = new KeyList<int>();
        Assert.Throws<ArgumentNullException>(async () => await keyList.LoadAsync((IDBProcedure)null, "ID", CancellationToken.None));
    }

我将其合并到我们的后备箱中(没有冲突),现在该测试失败了。我试图找出差异。

当我在后备箱中跟踪代码时,我看到了两个例外:

首先是我期望的参数努力。第二个是

NUnit.Framework.AssertionException saying Expected
<System.ArgumentNullException> But was:  null

当我在分支版本上运行测试时,我只看到一个异常,并且测试通过。

两个项目之间会有什么不同?

提供的代码似乎有一些问题,请考虑以下内容:

[Test, ExpectedException(typeof(ArgumentNullException)]
public async Task NullProcThrows_Async()
{
    var keyList = new KeyList<int>();
    await keyList.LoadAsync((IDBProcedure)null, "ID", CancellationToken.None);
    Assert.Fail("This should never be executed as we expected the above to throw.");
}

根据NUnit文档,您应该使用ExpectedException属性而不是Assert.Throws。因此,我添加了该属性,然后删除Assert.Throws,然后添加Assert.Fail。另外,我使方法Task返回,这阻止了async void。最后,这样做可以防止async lambda

最新更新