处理 Silverlight 单元测试中的依赖对象

2023-12-31

一段时间以来,我一直在使用 NUnit 和 Moq 以及 Silverlight 代码编写单元测试。我一直遇到的一个问题与 DependencyObjects 有关。

如果有任何东西是从 DependencyObject 派生的,那么我无法在测试中实例化它。例如,MouseEventArgs 派生自 DependencyObject。如果我有采用这些参数的代码,则由于多种原因我无法创建这些参数......其中之一是它是一个 DependencyObject。

据我了解,DependencyObject 的基本构造函数正在尝试处理一些除非整个 Silverlight 系统启动并运行否则不存在的静态数据。从 DependencyObject 派生的类的任何构造都会引发异常。真糟糕。

我不使用Silverlight 单元测试框架 http://code.msdn.microsoft.com/silverlightut/,因为它实际上不是单元测试并且需要 UI。我运行需要真正的无头单元测试。

不管怎样,我想出的最好的办法就是包装这些对象并给它们提供像这样的接口ITimelineMarker我给他们扩展方法来做到这一点:timelineMarker.ToInterface()。这很有效,我可以模拟它们......但我想知道:

有没有人想出更好的方法来处理 Silverlight 单元测试中的 DepenceObjects?


为什么应用程序逻辑直接与 SilverLight 事件和对象绑定?尝试通过应用程序的 UI 测试其逻辑的注意事项是众所周知的反模式,并且已经让位于以更有效的方式解决此问题的模式。

您的 UI 实际上应该只关心 UI 事件并将任何处理传递到另一层,然后在 UI 中测试的唯一事情就是图形响应(例如,当您单击按钮时,面板会从侧面滑入),测试此类交互的唯一好方法就是实际进行点击。

也许对您的问题更合适的答案是您需要重构代码以使用 MVC、MVP 或 MVVM 等模式,以便可以独立于 UI 层测试应用程序逻辑。

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

处理 Silverlight 单元测试中的依赖对象 的相关文章

随机推荐

  • 如何检测USB键盘是否插入和拔出

    当 USB 键盘从电脑上插入和拔出时 是否有任何守护进程 工具会触发一些信号 事件 我需要在程序中知道 USB 键盘何时插入和拔出 关于如何做到这一点有什么想法吗 udev Linux 设备管理器 是轮询硬件的管理器 当它检测到有关设备的某
  • 带有 Qt::AlignCenter 的 QPainter 无法正确居中文本

    我想做一个相当简单的绘图 在圆的中心写下两段文字 我的代码 painter gt drawText QRectF 0 0 m iSize m iSize Qt AlignCenter m sAlias n m sCode where m i
  • 会话路由#destroy 操作

    我链接到会话控制器的销毁操作 如下所示 路线 rb resources sessions only new create destroy Rails 对上面的链接进行了抱怨 没有路由匹配 action gt destroy controll
  • 使用 Linq 动态添加条件连接

    我有一个基本的搜索控件 它根据下拉列表提供的预定义搜索 过滤条件列出 CRM 中的公司 每个下拉菜单的默认选择是 全部 否则用户将选择特定的项目 我希望能够根据选择动态构建 Linq 查询 在 5 个选择器中 它们提供了我可以与 Compa
  • 使用 MockMvc 测试重定向 URL 的 HTTP 状态代码

    我想使用 MockMvc 在 Spring Boot 应用程序中测试登录过程 成功登录后 用户将被重定向到 home 为了测试这一点 我使用 Test public void testLogin throws Exception Reque
  • 数据结构中的自引用 - 检查相等性

    在我最初尝试创建不相交集数据结构时 我创建了一个Point数据类型与parent指向另一个的指针Point data Point a Point value a parent Point a rank Int 要创建单例集 Point创建它
  • 捕获所有无效 URL

    我最近升级了一个网站 几乎所有 URL 都发生了变化 我已经重定向了所有这些 或者我希望如此 但其中一些可能已经被我忽略了 有没有办法以某种方式捕获所有无效 URL 并将用户发送到某个页面 并以某种方式知道该人来自哪个 URL 以便我可以记
  • 在 TextMate 中,我无法使用 Rails tmbundle 创建部分

    Applications TextMate app Contents SharedSupport Support lib ui rb 355 in to plist An object in the argument tree could
  • PyCharm 能否以正确的顺序显示变量的字段?

    我定义了一个有几个字段的数据类 当我打印它时 它们以正确的顺序显示 def test dataclass class Image width int height int pixels object image Image width 4
  • 多线程感知模式下的 BOOST 库

    可以在所谓的线程感知模式下编译 BOOST 库 如果是这样 您将看到 mt 出现在库名称中 我不明白它给了我什么以及我什么时候需要使用这种模式 它给我带来任何好处吗 更重要的是 我对在无线程感知机制中编译 BOOST Threads 库 名
  • 如何使react swiper在垂直方向滑动

    我想让主页就像我可以在莫伊莱视图中一次滑动一篇文章一样 我尝试过反应滑动器 但反应滑动器正在水平滑动帖子 我想垂直滑动帖子 知道如何制作吗 你可以给它方向 只需像这样添加方向道具
  • python有比较和交换操作吗

    试图找到python是否支持CAS操作 无锁编程 像java中的并发 Python没有这些操作 Java 具有比 Python 更复杂的并发控制 CPython 几乎每个人都使用的典型实现 有一个您需要了解的全局解释器锁 Jython 是
  • Groovy 安全取消引用运算符 (?.) 的最佳 Scala 模仿?

    我想知道 Groovy 的最好的 Scala 模仿是什么安全取消引用运算符 http groovy codehaus org Null Object Pattern 或者至少有一些接近的替代品是 I ve 简要讨论一下 http www c
  • 带/多个条件赋值

    让我们来一个M 10 x 4 x 12 矩阵 作为例子 我以M 4 val 4 0 0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1
  • 访问未定义的子类型时自定义编译错误消息

    我有一些类型 其中每个类型都有相同名称的子类型 struct TypeA typedef int subtype struct TypeB typedef float subtype 以及没有此子类型但在同一上下文中使用的类型 struct
  • 如何以声明方式使用数据绑定参数创建 RouteUrls?

    我正在使用 ASP NET 4 中的新路由功能 Web 表单 而不是 MVC 现在我有一个绑定到数据源的 asp ListView 其中一个属性是ClientID我想用它从 ListView 项目链接到另一个页面 在global asax我
  • 使用 Picasso 和自定义 Transform 对象加载大图像

    从 Android Gallery 使用 startActivityForResult 加载 大 图像 gt 1 5MB 时 我使用 Picasso 遇到内存不足异常 我使用自定义 Target 对象 因为我需要在位图准备就绪时对其进行预处
  • 城市街道的程序生成?

    我读过 L Systems Parish Muller 和 Kelly McCabe 并尝试实施this https stackoverflow com questions 12956334 how is l systems for roa
  • Coldfusion 为某些类添加 id

    目前我有一堆 HTML 存储在一个变量中 我将其输出到看起来有点像这样的页面 p class firstpara some stuff p p class subhead a heading p p class subsubhead a s
  • 处理 Silverlight 单元测试中的依赖对象

    一段时间以来 我一直在使用 NUnit 和 Moq 以及 Silverlight 代码编写单元测试 我一直遇到的一个问题与 DependencyObjects 有关 如果有任何东西是从 DependencyObject 派生的 那么我无法在