c# - Xamarin 表单单元测试

标签 c# unit-testing visual-studio-2015 xamarin.forms

为 Xamarin Forms 应用程序编写单元测试的方法是什么(相对于 Xamarin Traditional,即 Xamarin.Android、Xamarin.IOS 或 Xamarin.UWP)?

谁能很好地解释 Xamarin.Forms 中的单元测试与 Xamarin Traditional 中的单元测试?

关于如何实现 Xamarin.Forms 测试的很好的解释文章,是否需要它们,或者我们是否应该为每个平台编写单元测试?

我已经阅读了很多文章,但还没有找到一篇从在 Visual Studio 中创建单元测试项目类型到编写和运行测试的文章。

他们大多从中间的某个地方开始讨论 DI 或 ServiceLocator(就像这个 http://arteksoftware.com/unit-testing-with-xamarin-forms-dependencyservice/ )。

或者,另一方面,他们将 Xamarin.Forms 与 Xamarin.Android(或 IOS)单元测试混合使用(例如:http://www.dsibinski.pl/2017/03/unit-testing-xamarin-application/)。

或者,他们将可移植和共享混合在一起,就像这个案例一样 http://www.alteridem.net/2015/12/21/testing-xamarin-projects-using-nunit-3/ .

到目前为止,我所了解的是我可以在 VS 中使用常规单元测试项目并使用 MSTest 或 NUnit。或者,我可以为每个平台编写特定于平台的单元测试。

所有这些都非常令人困惑,因为作者似乎到处都在混用这些术语。

如果我是该领域的新手,请提供详细的答案和支持示例,我们将不胜感激。

最佳答案

我有一段时间有同样的问题,我最终确定了一个策略,该策略由两部分组成,包括代码的单元测试和 UI 测试。

单元测试没有 UI 的代码。例如模型、服务等的测试。通常我有一个单元测试项目,单元测试是针对共享库编写的。

UI 测试特定于操作系统。我有一个 iOS 测试项目和一个 Android 测试项目。我考虑过拥有一个 UI 测试项目,这将是 Nirvana。我只是不相信它可以处理每个操作系统的所有 UI 细微差别。

在构建期间,我运行单元测试。如果它们通过,则运行 UI 测试。对于每个操作系统,我有两组测试,冒烟测试和深度测试。冒烟测试是在一小部分设备上完成的。在将测试时间浪费在糟糕的构建上之前,我可以快速判断构建的质量。然后在良好的构建上对相同的小设备子集执行深度测试。如果一切都通过,则会在更大的设备池上执行冒烟测试。如果崩溃报告出现在大型池中的设备上,则会执行深度测试。如果有问题的设备拥有足够大的用户群并且仍然存在问题,则会将其添加到深度池测试中。

我在非常非常长的职业生涯中学习了这份工作,包括在 Microsoft 工作 7 年,包括在几个团队中担任 PM,这些团队致力于 .NET Framework、.NET Framework SDK 和相关技术,例如 ASP.NET MVC、WebAPI 、Azure 等。我上面描述的构建过程大致基于 .NET Framework 和 .NET Framework SDK 的构建方式。 .NET 的构建需要一段时间。测试运行的时间甚至更长(想想物理日),因此将快速冒烟测试作为构建的一部分非常有用并且可以节省时间。有时构建会编译并产生安装,但会出现一些(相对而言)测试可能指向错误构建并为 QA 团队节省大量时间的问题。

下面的 Rookiejava 添加了一些很好的链接,用于学习如何编写测试。

我对设计测试的最佳建议是愚蠢、刻薄、严格和小鬼。通过愚蠢的测试,做一些不懂编程的人不会做的事情。最好的例子是在 I believe x-box 上发现的登录错误。某人的 child 做了一件非常古怪的事,你瞧,他父亲的账户就进了。我的意思是说做令人发疯的事情会让你发疯。双关语。例如点击您的产品。不是开玩笑,有一家保险柜大厂,把保险柜打在某个地方,可以不用密码打开!从字面上看要严格,不要做出假设。如果用例、用​​户故事或您用来了解代码应该如何工作的文档说疲劳,那么您的测试应该让代码仅在疲劳时通过,即使我们都知道它应该是疲劳。请提交针对用例/用户故事的错误;)我能提供的最大建议就是像小 Sprite 一样思考。不要只是测试快乐路径是否有效或数据验证规则是否有效。测试进行奇怪的输入和组合命令、按键等。我使用的最好的测试工具是用于 Windows Mobile 的 Microsoft 测试工具。是的,Windows。该工具会对应用程序的用户界面做完全随机的事情。随机按键将信息从下到上放置,甚至以随机顺序放置。很高兴看到有多少人不自觉地做出了我和其他人所做的假设。它甚至发现了一个错误,可以让某人完全访问我为政府机构工作的设备,不仅我们的团队错过了,而且其他外部安全测试人员也错过了。我们在设备进入开发之外的任何人之前悄悄地修补了它。

关于c# - Xamarin 表单单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44873933/

相关文章:

c# - 单元测试什么都不返回,如何断言?

c# - 构建模块化的 asp 核心 Angular 应用程序

C# - 为什么需要实例化每个数组元素?

c# - 设置特定列中每个 DataTable 行的值

c++ - 为什么我收到此错误 : constexpr' is not valid here

c# - Intellisense 不适用于带有 Xamarin 的 Visual Studio 2015 中的 .cs 文件

visual-studio - .NET vNext 只使用引用包中的一个 dll

c# - 服务与流程

unit-testing - 测试 future 和流,我如何创建一个假的上下文?

unit-testing - beforeInterceptor 的测试用例