为什么在NUnit Android Test Runner中Asserts等于0(零)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在NUnit Android Test Runner中Asserts等于0(零)?相关的知识,希望对你有一定的参考价值。

正如标题中所提到的,为什么在我的NUnit android Test Runner中显示Asserts: 0,尽管在相应的测试方法中有两个Asserts被调用?只是好奇我是否以错误的方式做断言,或者显示的信息可能与我的想法完全不同。

enter image description here

测试方法如下所示。两条Assert线的断点按预期击中。

[Test]
public async Task TestDeleteHistoryShouldEmptyTable()
{
    var newBookmark = new Bookmark
    {
        Id = "foo",
        Page = 100,
        CreatedBy = "john doe",
        CreatedDate = DateTime.Now
    };
    await _mainVM.Repo.SaveAsync(newBookmark);
    var historyBefore = await _mainVM.Repo.GetLatestBookmarksAsync(Helpers.HistorySize);
    Assert.True(historyBefore.Any());

    await _mainVM.Repo.ClearTable("Bookmark");
    var historyAfter = await _mainVM.Repo.GetLatestBookmarksAsync(Helpers.HistorySize);
    Assert.True(!historyAfter.Any());
}

更新:

使用以下测试方法也可以重现该问题:

[Test]
public async Task TestAsyncCounter()
{
    await FakeAsyncMethod();
    Assert.True(true);
}

public async Task FakeAsyncMethod()
{
    await Task.Delay(1000);
}
答案

这被证明是一个框架错误,由@CharliePoole证实,issue tracker是他们的await Task.Delay(1)中的NUnit维护者之一:

“好吧,我必须收回最后一条评论。当等待的方法不包含await本身并因此同步处理时,它正常工作。当我在等待的方法中包含https://github.com/nunit/nunit/issues/1499时,我看到奇怪的结果。所以有绝对是一个框架错误,它甚至可以在.NET 4.5中看到。“

我们暂时等待问题跟踪器中的更新。


更新的问题跟踪链接:qazxswpoi

以上是关于为什么在NUnit Android Test Runner中Asserts等于0(零)?的主要内容,如果未能解决你的问题,请参考以下文章

JetBrains Resharper 9 Ultimate Test Runner 错误:NUnit.Core.UnsupportedFrameworkException:跳过加载程序集 MyAss

xUnit dotnet test CLi 输出到 NUnit xml 以便 Bamboo 可以读取结果

NUnit3 测试不在 TFS 构建上运行

单元测试之NUnit二

在 xUnit.net 中测试参数化,类似于 NUnit

Xamarin Android Nunit测试在测试资源管理器中可被发现,但在运行测试时未被发现。 (VS2017)