Xamarin 到 .net 的迁移 - 单元测试差距?

Xamarin to .net migration - unit testing gap?

提问人:Antonio Lopes 提问时间:11/10/2023 更新时间:11/10/2023 访问量:40

问:

像许多使用 Xamarin 的开发人员一样,我开始考虑迁移到 .net-android 和 .net-ios。

我对迁移本身没有问题,无论是应用程序还是库项目。但是,我在单元测试中遇到了一些障碍。

在我的解决方案/项目中,我目前使用 VS 允许您创建的单元测试应用程序:

  • Android:适用于 Xamarin.android 的 UnitTestApp,它使用 xamarin.legacy.nunitlite 作为 Nuget 包。
  • iOS:适用于 Xamarin.iOS 的 UnitTestApp,它使用引用 Monotouch.Nunitlite,因此可以使用 TouchRunner(CI 的自动启动和终止)

然后,使用 Touch.Unit (iOS) 和 Instrumentation (Android) 在 CI 中使用这些单元测试应用

最新的 VS(至少适用于 mac)不提供为 .net-android/ios 创建 UnitTest 应用程序的选项。

我设法使用上面提到的 nuget xamarin.legacy.nunitlite 让 Android 工作,因为它确实以 net6.0-android3X 为目标。不幸的是,对于iOS,我完全迷路了。Nunitlite 在任何地方都不能作为软件包使用,当然 TouchRunner 在 .net-ios 中的任何地方都不可用。

我看到xUnit被提到很多,甚至在一些Microsoft文档中。但是,我很难接受我需要更改整个测试代码,因为 .net 和 nunitlite 不是一回事?特别引用:

好消息是,我们已经优先考虑了兼容性,我们预计不会有太多(如果有的话)代码更改。大部分工作将转换为新式 .NET 生态系统其余部分使用的新 SDK 样式项目文件格式。

有没有人使用 nunitlite 成功将现有的单元测试 xamarin.android/ios 应用移植到 .net-ios/android/maui?

谢谢

C# Android iOS Xamarin Maui

评论

0赞 Gerald Versluis 11/10/2023
我们在 .NET MAUI 存储库本身中有大量单元测试,这些测试也在设备上运行。你也可能从那里得到一些灵感!
0赞 Antonio Lopes 11/10/2023
谢谢@GeraldVersluis。那些似乎使用了 xUnit,这违背了不必“更改代码”的目的,对吧?我不是想迂腐,我只是想知道这种迁移是否会迫使我改变当前使用的单元测试框架/库和架构。Nunitlite多年来一直是xamari的一部分,那么为什么现在要改变呢?
0赞 Gerald Versluis 11/10/2023
我猜 GitHub 存储库上的通知“此存储库已由所有者于 2017 年 11 月 19 日存档。它现在是只读的“,可能有一个很好的理由;)
0赞 Antonio Lopes 11/10/2023
也许我们在谈论不同的事情。xamarin.legacy.nunitlite (支持 .net6.0) 和 Touch.Unit (spouliot) 最近都有与支持 .net 相关的更改...无论如何,感谢您的帮助和隐含的答案:“是的,您必须迁移到 XUnit”。
0赞 Gerald Versluis 11/11/2023
啊,好吧,也许吧。无论如何,不想把这个作为答案,因此只是一个评论。只是想说:我们在 .NET MAUI 代码库中执行此操作,你也许可以从我们在那里做事的方式中获得一些灵感。祝你好运!

答: 暂无答案