正如标题中所提到的,为什么在我的NUnit Android Test Runner中显示Asserts: 0
,尽管在相应的测试方法中有两个Assert
被调用?只是好奇我是否以错误的方式做断言,或者显示的信息可能与我的想法完全不同。
测试方法如下所示。两条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);
}
答案 0 :(得分:2)
这被证明是一个框架错误,由@CharliePoole确认,他是issue tracker中的NUnit维护者之一:
"好的,我必须收回最后一条评论。当等待的方法不包含等待自身时,它可以正常工作,因此可以同步处理。当我在等待的方法中包含
await Task.Delay(1)
时,我看到奇怪的结果。所以肯定存在框架错误,它甚至可以在.NET 4.5中看到。"
让我们暂时等待问题跟踪器中的更新。