我正在尝试为 Xamarin Mac 类库项目创建一个单元测试项目。
.NET NUnit 库项目它不起作用,因为我无法添加对我的 Xamarin Mac 类库的引用,因此我尝试创建一个新的 Xamarin Mac 类库项目并向其中添加 NUnit Nuget 包。
<package id="NUnit" version="3.5.0" targetFramework="xamarinmac20" />
对于第一部分,它起作用了,因为测试在测试管理器中可见,但不幸的是,每次我尝试运行单元测试时,我都会收到“加载失败”。
发生一个或多个错误。
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 https://github.com/mono/guiunit.
有两种使用 guiunit 的方法:
- 将程序集与 guiunit 一起打包并运行它们的传统方式:https://developer.xamarin.com/samples/mac/guiunit-example/ https://developer.xamarin.com/samples/mac/guiunit-example/
- 创建 XM 应用程序并直接包含 guiunit 的不太标准的方法:https://github.com/xamarin/xamarin-macios/blob/master/tests/common/mac/MacTestMain.cs#L16 https://github.com/xamarin/xamarin-macios/blob/master/tests/common/mac/MacTestMain.cs#L16
传统的方式更容易集成到现有的 nunit 工作流程中,而较新的不太标准的方式更容易调试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)