在Windows上使用nunit test在Windows上Monodevelop崩溃字符 - c#

我正在使用Monodevelop 2.8.6.5并尝试不断运行单元测试返回内部错误:

`ArgumentException`: Illegal characters in path
at System.IO.Path.CheckInvalidPathChars(string)
at ...
at ...
at MonoDevelop.NUnit.XmlResultsStore.GetRootRecord(string configuration...)

基本上,问题是MonoDevelop.NUnit.XmlResultsStore.GetRootRecord传递了"Debug|x86"作为配置,然后它试图为其创建路径或文件夹,并且由于|而获得异常。是非法的。我可以创建一个没有|的配置,但是MonoDevelop变得非常混乱。因为它假定这意味着“任何平台”,所以我不能创建x86 build.这意味着我无法运行该程序,但是我可以对其进行Unit Test

我现在的选择是对.sln.csproj文件进行文本破解,直到它们都可以工作或者只有两个解决方案配置为止。

更令人困惑的是,我还没有在网上看到有关此问题的单个问题,这似乎是有保证的问题。

有人知道该怎么办吗?如果有解决方案-"file a bug report"也很好。

参考方案

那绝对是一个错误,并且您对问题的诊断似乎正确。请在http://bugzilla.xamarin.com归档。

请注意,解决方案配置是对要包含在构建中的一组项目及其要使用的配置的映射。解决方案配置的名称不必与项目配置匹配。这意味着您可以通过使Debug | x86解决方案配置使用单元测试项目的Debug | AnyCPU配置来解决该错误。

这可能没有任何问题,因为您实际上实际上并不需要将平台设置为x86。解释相当复杂,但我会试一试。

MonoDevelop中的新桌面可执行项目具有“ Debug | x86”和“ Release | x86”配置,以与Visual Studio兼容。使用“ x86”作为配置名称的平台组件实际上不会对二进制文件的编译或执行产生任何直接影响,但是这些特定的配置还将C#编译器选项的平台值设置为“ x86”,从而将已编译二进制文件中的标志。对于可执行文件,此标志意味着Windows x64执行二进制文件时,它将使用x86 .NET运行时而不是默认的x64运行时。对于库,这意味着x64 .NET运行时将拒绝加载库。 Mono运行时将完全忽略该标志。

AFAIK通过将可执行项目默认设置为以x86为目标,MS做到了这一点,从而使开发人员不会遇到仅在32位Windows上存在的P / Invoking库问题。由于大多数程序不需要在x64模式下运行,因此这值得权衡。

x86进程可以很好地加载AnyCPU库,因此新的库项目始终具有AnyCPU配置名称,并且不设置编译器标志。 VS通常会创建“混合”解决方案配置,以映射到x86可执行项目配置和AnyCPU库项目配置。

不幸的是,即使不需要或毫无意义,MonoDevelop对于在所有项目中创建以匹配名称命名的配置都过于狂热。 MD可能会为您的库项目(包括NUnit测试项目)创建以x86命名的配置。它们不会设置x86编译器标志,而且您也将不需要它,因此您可以删除它们并将所有解决方案配置映射到AnyCPU库配置。

还要注意,当MD运行NUnit测试时,它使用其自己的远程主机进程可执行文件(标记为x86)加载测试库。因此,即使在64位Windows上,测试也将始终在x86上运行。

NUnit-用于测试事务的单元测试用例 - c#

我有如下方法。我想为以下方法编写两个测试用例。1)提交数据成功完成交易2)带有回滚数据的失败事务如何编写涉及事务并成功与失败的测试用例?public async Task<List<string>> UpdateRequest(MetaData data, List<string> Ids, string requeste…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解统计城市的所有灯泡

这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…

LeetCode题解黑白圆盘

一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向?题解:可以用一个相机即可

LeetCode题解圆上任取三点构成锐角三角形的概率

来自字节跳动的一道几何题题解:1/4