热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:为什么在NUnitAndroidTestRunner中Asserts等于0(零)?

正如标题中所提到的,为什么在我的NUnit




正如标题中所提到的,为什么在我的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(零)?的主要内容,如果未能解决你的问题,请参考以下文章

单元测试之NUnit二

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

NUnit属性

使用多个TestCaseSource属性执行Nunit测试用例

单元测试之NUnit一

Unity 单元测试(NUnit,UnityTestTools)


推荐阅读
author-avatar
似水年华的梦想_818
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有