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

【为什么在NUnit Android Test Runner中Asserts等于0(零)()】逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述为什么在NUnit Android Test Runner中Asserts等于0(零)?相关的知识,希望能为你提供帮助。
正如标题中所提到的,为什么在我的NUnit android Test Runner中显示Asserts: 0,尽管在相应的测试方法中有两个Asserts被调用?只是好奇我是否以错误的方式做断言,或者显示的信息可能与我的想法完全不同。

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

文章图片

测试方法如下所示。两条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

    推荐阅读