Xamarin.mac 单元测试项目

Xamarin.mac unit test project

我正在尝试为 Xamarin Mac Class 库项目创建单元测试项目。

.NET NUnit 库项目它不起作用,因为我无法添加对我的 Xamarin Mac Class 库的引用,所以我尝试创建一个新的 Xamarin Mac Class 库项目并向其中添加了 NUnit Nuget 包。

<package id="NUnit" version="3.5.0" targetFramework="xamarinmac20" />

第一部分成功了,因为测试在测试管理器中可见,但不幸的是,每次我尝试 运行 单元测试时,我都会收到 "Load failed"。

出现一个或多个错误。

Stack trace:
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2157 
  at System.Threading.Tasks.Task`1[TResult].GetResultCore (System.Boolean waitCompletionNotification) [0x00034] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/threading/Tasks/Future.cs:562 
  at System.Threading.Tasks.Task`1[TResult].get_Result () [0x00000] in /private/tmp/source-mono-4.6.0-c8sr0/bockbuild-mono-4.6.0-branch-c8sr0/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/threading/Tasks/Future.cs:532 
  at MonoDevelop.UnitTesting.NUnit.NUnitAssemblyTestSuite.RunUnitTest (MonoDevelop.UnitTesting.UnitTest test, System.String suiteName, System.String pathName, System.String testName, MonoDevelop.UnitTesting.TestContext testContext) [0x0014a] in /Users/builder/data/lanes/3816/fa52f026/source/monodevelop/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs:424 

Xamarin.Mac 需要大量的手来将本机支持库放在正确的位置/加载所有内容,然后确保您只调用 NSApplication.Init 一次,无论测试次数如何,等等。

让 nunit 做到这一点并非易事。我建议尝试 https://github.com/mono/guiunit.

guiunit有两种使用方式:

传统方式更容易集成到现有的 nunit 工作流中,而较新的不太标准的方式更容易调试。

我 运行 遇到了同样的问题,最终将 class 库的目标框架从 Xamarin.Mac 移动框架 更改为 Xamarin.Mac.NET 4.5 框架

我不知道这是否适合您。