在 Windows 应用商店应用程序中进行模拟

2024-04-29

我可能不是第一个出于测试目的而在 Windows 商店应用程序中处理模拟的人。我想测试我的 ViewModel 并使用一些模拟框架来模拟它们。当然,所有可用的(通用)框架都不能在 Windows 应用商店应用程序项目中使用。我有一个想法如何解决它,但我不确定这是最好的解决方案。我的解决方案由这些项目组成。要点是将表示层分为两部分:

推介会- Windows 商店应用程序

仅包含演示视图(页面)和不需要测试的演示部分的启动项目。该项目参考了PresentationLogic。

呈现逻辑- 可移植类库,目标:Windows 商店应用程序、.NET Framework 4.5

该项目包含所有应该测试的表示逻辑,如 ViewModels、转换器、助手等

单元测试- 类库

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

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

您知道如何处理这个问题吗?将表示层拆分为另一种项目类型的两层怎么样?会不会给后续的发展带来一些问题?


您绝对走在正确的道路上。一些注意事项:

使用 MvvmLight(顺便说一句,它是可移植的),您可以使用其内置的 ServiceLocator 和 DependencyInjection 来执行诸如为平台特定进程注入测试控制器之类的操作。通过定义接口和注入实现(包括模拟实现),这将允许大量逻辑保持可移植性。

根据您的 PCL,您可能(根据我的经验)无法包含转换器(继承自IValueConverter)在你的PCL中。该库通常在平台之间有所不同(尤其是 Silverlight/WinRT/4.5/Mono),因为它们最常见的用途是用于 UI,例如绑定处理。与类似的事情相同DataTemplateSelectors。这些可能需要针对大多数平台进行重写(尽管幸运的是这并不难,而且仍然是相当多的复制粘贴)。

至于剩下的部分,你已经说得一清二楚了。你可以拥有你的Presentation app be Universal,因此它可以涵盖 Windows 应用商店和 Windows Phone 应用商店应用程序。绝大多数“业务逻辑”应该位于 PCL 中。您可能会在这方面遇到一些问题,因为有时不可避免地需要在虚拟机中放置一些 UI 帮助程序以方便使用。如果这是绝对必要的,您可以制作便携式 ViewModelabstract,然后使用上面提到的依赖注入来插入特定于平台的实现。这很容易做到并且非常有用。

您缺少的一件事是 UI 测试。您可以将它们包含在单元测试类库中,或者创建另一个编码的 UI 测试类库,具体取决于您。

无论如何,希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 应用商店应用程序中进行模拟 的相关文章

随机推荐

  • 什么是“按名称传递”以及它到底如何工作?

    我查过 Wikipedia 并用 google 搜索过 但我仍然无法理解 ALGOL 60 中的按名称传递是如何工作的 我找到了一个很好的解释按名称传递参数 http www cs sfu ca cameron Teaching 383 P
  • 在 Python 中打开文本文件时出现问题

    这看起来应该很简单 f open C Users john Desktop text txt r 但我收到此错误 Traceback most recent call last File
  • 在 Magento 中获取过去 24 小时内的订单商品

    我正在尝试获取过去 24 小时内的所有订单商品 我已锁定查询 因此它返回了我需要的内容 order id 和created on 值 order items Mage getResourceModel sales order item co
  • 使用 cURL 发布数据时出现“位置参数”错误

    如果我要在没有 data 它工作得很好 我试过谷歌 但找不到这个问题的任何答案 按照位于的指示here https guides instructure com m 4214 l 83393 how do i install and use
  • UIView 动画取消任何触摸输入?

    我在这里有一个 UIScrollView 当用户滚动到页面时 我在屏幕中间添加显示标签 问题是 当动画进行时 用户无法滚动到下一页 所有用户交互似乎被禁用 直到动画结束 这是我用于显示标签的代码 if scrollView dragging
  • 如何使用jsp上传服务器文件夹上的文件[重复]

    这个问题在这里已经有答案了 我正在尝试使用 servlet jsp 将一些图像上传到位于我的服务器上的文件夹中 下面是我的代码 它在我的本地计算机上运行 import java io import java util import java
  • 使用 SSIS 将数据从 Oracle 导入到 SQL Server 时出现代码页错误

    我在 SSIS 包中的 OLEDB 源上收到以下警告 警告 1 验证警告 数据流任务 20582F6F DD9C 45F5 8727 992F525E67DC 无法检索该列 来自 OLE DB 提供程序的代码页信息 如果组件支持 Defau
  • Google Adsense 中的 Javascript 错误

    在我的几个运行 AdSense 的网站上 我收到以下错误 无法将消息发布到 http googleads g doubleclick net http 5Dgoogleads g doubleclick net 收件人有来源http www
  • 系统调用:sys_exit()、SYS_exit 和 exit() 之间的区别

    SYS exit sys exit 和 exit 之间有什么区别 我的理解是 Linux内核提供了系统调用 这些调用在man 2 syscalls 这些系统调用的包装函数由glibc它们的名称与系统调用大多相似 我的问题 在man 2 sy
  • 如何在 JavaScript 中通过方括号访问私有字段

    这段代码的工作原理 class Test field get field return this field 但如果我想计算字段名称我必须使用方括号 但它不起作用 class Test field get field return this
  • 项目未出现在“gcloud 项目列表”中

    我在 Google Cloud 控制台中添加了一个项目 但使用 gcloud SDK gcloud 项目列表 未显示该项目 我是在做一些愚蠢的事情还是我错过了什么 Edit 您是否为新帐户使用不同的凭据 否 该帐户是在控制台和sdk控制台上
  • 用户在对话框中输入

    python 中是否有任何库可用于图形用户输入 我知道关于tk但我相信需要一些代码才能做到这一点 我正在寻找最短的解决方案 a input Enter your string here 取而代之的是 我想要一个对话框 以便用户可以在那里输入
  • 什么是好的规格? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 中的一项乔尔测试 http www joelonsoftware com articles fog0000000043 html是一个
  • 如何在 SSRS 中将多个值传递给多值参数

    我将通过过度简化报告结构来尽力解释这个问题 第一份报告包含 1 个名为 资源中心 的组 然后在其下包含一行总计 总计实际上是一个组 但分组是在 SQL 中完成的 并显示在详细信息组中 该报告看起来像这样 Report 1 ResourceC
  • 清除 Laravel 队列缓存而不重新启动

    在我的应用程序中 每个客户都有一种复杂的类 我们在其中为该特定客户进行一些搜索和替换 我运行队列工作人员每天与 eBay 同步 以便每个客户进行某种搜索和替换 问题是 Laravel 队列会缓存代码很长一段时间 如果我想去更改任何客户类文件
  • 如何使用 Javascript 更改具有相同类名的多个元素?

    跟进至我之前的问题 https stackoverflow com q 42389937 2803565 我想使用 JS 使用按钮来显示 隐藏具有相同类名的多个元素 但似乎我只能更改具有特定类名的第一个元素 并且页面上具有相同类名的所有其他
  • Android - 如何创建布局选择器(如 ImageButton 选择器)

    我有一个 ImageButton 和一个包裹该按钮的 LinearLayout 如下所示
  • Rxjava 中“背压”一词是什么意思?

    我是 RxJava 的初学者 我很好奇 背压 这是否意味着生产者在背后给消费者施压 或者这是否意味着消费者正在向生产者施加压力 反方向施压 RxJava 背压 当你有一个 observable 发射物品的速度太快 以至于消费者无法跟上流量
  • 循环遍历类为“blah”的所有元素并找到最高的 id 值

    我有很多元素 例如 div class blah div 我想循环遍历所有这些并获得最高的 ID 即 123 这个怎么做 以下是正确的和最好的方法吗 blah each function var id this attr id split
  • 在 Windows 应用商店应用程序中进行模拟

    我可能不是第一个出于测试目的而在 Windows 商店应用程序中处理模拟的人 我想测试我的 ViewModel 并使用一些模拟框架来模拟它们 当然 所有可用的 通用 框架都不能在 Windows 应用商店应用程序项目中使用 我有一个想法如何