我在Xamarin解决方案中使用了一个用于PCL的.NET Standard 1.4项目。我正在尝试添加一个单元测试项目。
我遵循了我能找到的指导方针并执行以下操作:
我添加了一个引用我的.NET Standard项目的.NET Core 2.0项目,并通过NuGet安装了以下内容:
我添加了一个包含所有NUnit属性的超级简单测试并运行它。
在Visual Studio for Windows上,使用Resharper测试运行器完成测试。但是在Visual Studio for Mac上,使用内置的运行程序,我收到以下错误:
错误:System.IO.FileNotFoundException:无法加载文件或程序集'nunit.framework'或其依赖项之一文件名:'nunit.framework'
没有任何谷歌搜索或小提琴有帮助。任何人都可以提出一些建议吗?
您的测试库不能是.NET标准库。它需要是netcoreapp或net full framework。因此,您需要将目标更改为netcoreapp2.0
或类似net461
。或者你可以使它成为多目标:
<TargetFrameworks>net461;netcoreapp2.0;netstandard2.0</TargetFrameworks>
这是由于VSTest和Visual Studio要求您的测试针对特定平台。使用仅.NET标准库无法完成此操作。
如果您选择多目标,您的milage可能会在Visual Studio中有所不同。但是,命令行工具应该可以工作,你应该能够使用dotnet test
非常容易地运行它,只需将它指向csproj
文件进行单元测试。
这也记录在NUnit文档中:https://github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard
如果您更改为其他框架(如Xunit),这些限制不会更改。
这结果是VS Mac 7.3.4 beta中的一个错误,MS正在修复它。