Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在mono单元测试项目中吞没了Debug.Assert(false)异常_C#_Mono_Nunit_Xamarin Studio - Fatal编程技术网

C# 在mono单元测试项目中吞没了Debug.Assert(false)异常

C# 在mono单元测试项目中吞没了Debug.Assert(false)异常,c#,mono,nunit,xamarin-studio,C#,Mono,Nunit,Xamarin Studio,我有一个.NET库,目标是.NET4.5,其中包含一些 Debug.Assert(条件); 甚至 Debug.Fail(“foo”); 然后我让UnitTests项目(仍然是.NET4.5,NUnit2.6.2)引用我的库。当我运行测试或调试测试时,当其中一个断言失败时,执行不会停止。应该抛出的异常Debug.Assert()被吞没并忽略 我在运行Xamarin Studio 4.2。相同的项目在VisualStudio上的行为与预期相同 如果我的库构建在Xamarin.iOS上,并且我从X

我有一个.NET库,目标是
.NET4.5
,其中包含一些

Debug.Assert(条件);
甚至

Debug.Fail(“foo”);
然后我让UnitTests项目(仍然是
.NET4.5
NUnit2.6.2
)引用我的库。当我运行测试或调试测试时,当其中一个断言失败时,执行不会停止。应该抛出的异常
Debug.Assert()
被吞没并忽略

我在运行Xamarin Studio 4.2。相同的项目在VisualStudio上的行为与预期相同

如果我的库构建在
Xamarin.iOS
上,并且我从
Xamarin.iOS
应用程序引用它,也会发生同样的情况。异常会打印在控制台上,但仅此而已

显然,我的所有构建都是在调试中完成的

这是一个已知的bug,是我遗漏了什么,是我做错了什么>/p>这是(曾经?)Mono中的一个已知bug,我想它可能最近才被修复,但它可能还没有在Mono的发布版本中(我不确定)。我只记得Michael Hutchinson告诉我在过去几周内已经修好了


我的猜测是,它将在Mono 3.2.5或更高版本中得到修复。

旁注:
Debug.Assert
不是例外,而是通知日志/跟踪侦听器执行某些操作。。。通常要处理的痛苦(特别是在你想要实现的VS行为的情况下)。。。我很高兴有人将单元测试项目配置为默认情况下忽略它们:)两个链接-这篇文章讨论了为什么不应该测试断言:,下面是我关于将VS行为修复为更友好的测试的答案-(这可能会帮助您“重新启用”
Debug.Assert
测试)。
Debug.Assert()
已知在许多情况下行为不确定。即使在VisualStudio中,预期的消息窗口也可能不会弹出,例如,如果断言发生在后台线程上。最好使用一些日志记录。或者抛出一个真正的异常,将您弹出到调试器。我使用的是
Debug.Assert
s。在单元测试中,我不使用它们来测试我的逻辑。我在我的业务逻辑调用中使用它们作为安全防护,例如作为循环不变量,当它发生时,这意味着使用lib的开发人员有错误(因此在调试中应该抛出),但是lib可以从中恢复,所以它不应该在发布中抛出。