作者:似水年华的梦想_818 | 来源:互联网 | 2023-07-30 20:48
正如标题中所提到的,为什么在我的NUnit android Test Runner中显示Asserts: 0
,尽管在相应的测试方法中有两个Assert
s被调用?只是好奇我是否以错误的方式做断言,或者显示的信息可能与我的想法完全不同。
测试方法如下所示。两条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(零)?的主要内容,如果未能解决你的问题,请参考以下文章
单元测试之NUnit二
Xamarin Android Nunit测试在测试资源管理器中可被发现,但在运行测试时未被发现。 (VS2017)
NUnit属性
使用多个TestCaseSource属性执行Nunit测试用例
单元测试之NUnit一
Unity 单元测试(NUnit,UnityTestTools)