嘲弄在Windows商店应用程序

本文关键字:应用程序 Windows 嘲弄 | 更新日期: 2023-09-27 18:03:06

我可能不是第一个为了测试目的而在windows store应用程序中处理mock的人。我想测试我的ViewModels,并使用一些模拟框架来模拟它们。当然,并非所有可用的(通用的)框架都能在windows store应用程序项目中使用。我有一个解决这个问题的办法,但我不确定这是不是最好的办法。我的解决方案包括这些项目。要点是将表示层分为两部分:

演示 - Windows store应用

启动只包含不需要测试的表示视图(页面)和表示部分的项目。这个项目参考了PresentationLogic。

PresentationLogic -可移植类库,目标:Windows store应用程序,.NET Framework 4.5

该项目包含所有应该测试的表示逻辑,如ViewModels, Converters, Helpers等

UnitTests -类库

包含单元测试的经典类库,能够模拟来自PresentationLogic的所有接口。这个库引用了PresentationLogic。

将Views和ViewModel划分为两层是很奇怪的,但我没有找到另一个解决方案。

你有什么办法处理这个问题吗?将表示层拆分为另一个项目类型的两个层怎么样?在进一步的发展中会不会造成一些问题?

嘲弄在Windows商店应用程序

你绝对是在正确的轨道上。注意事项:

使用MvvmLight(顺便说一下,它是可移植的),你可以使用它们内置的ServiceLocator和DependencyInjection来做一些事情,比如为平台特定的进程注入测试控制器。这将允许大量的逻辑保持可移植性,通过定义接口和注入实现(包括模拟实现)。

根据您的PCL,您可能(以我的经验)无法在PCL中包括转换器(从IValueConverter继承)。该库在不同的平台之间通常是不同的(尤其是Silverlight/WinRT/4.5/Mono),因为它们最常见的用途是用于UI,比如绑定处理。DataTemplateSelector s也是一样。这些可能需要在大多数平台上重新编写(尽管幸运的是这并不是那么难,而且仍然需要大量的复制粘贴)。

至于其余的部分,你完全正确。你可以让你的Presentation应用程序是Universal,所以它可以覆盖Windows Store和Windows Phone Store应用程序。你的绝大多数"业务逻辑"应该在你的PCL中。在这方面,您可能会遇到一些问题,因为有时为了方便使用而在VM中放置一些UI帮助程序是不可避免的。如果这是绝对必要的,您可以将Portable ViewModel设置为abstract,然后使用上面提到的依赖注入来插入特定于平台的实现。这很容易做到,非常有用。

你缺少的一件事是UI测试。您可以将它们包含在您的单元测试类库中,或者创建另一个Coded UI test类库,由您决定。

无论如何,希望这对你有帮助。

供您参考,您现在可以使用JustMock来直接模拟Windows 8.1单元测试项目。

看我的答案