【问题标题】:C# unit testing: simulate SD cardC#单元测试:模拟SD卡
【发布时间】:2015-04-27 11:47:16
【问题描述】:

我用 C# 编写了一个应用程序,它在安装或卸载 SD 卡时执行任务。 它作用于 DBT_DEVICEARRIVAL 和 DBT_DEVICEREMOVECOMPLETE 消息。 现在我想编写测试来检查应用程序是否对这些事件做出正确反应。 如何在单元测试中模拟 SD 卡的到达和移除?

谢谢

【问题讨论】:

  • 您需要向我们展示您的实际代码,否则任何尝试回答的人都在猜测是诚实的,通常您会抽象出“SD CARD”特定功能并简单地测试处理事件。
  • 将触发事件的代码放入实现接口的类中,然后针对接口进行编码。在单元测试中模拟出接口(或创建一个虚拟类)。
  • 这可能是部分解决方案,尽管我的代码获取了设备标签和序列号,并且所有这些都必须被模拟。我想要一个解决方案,我的计算机中有一张已知的 SD 卡,并且能够从我的单元测试中挂载/卸载它以测试应用程序响应。
  • 单元测试不应依赖于物理移除卡等外部因素。这使得它们成为集成测试,这很重要,但用于不同的目的。
  • 好的,那么我应该在我的标题中使用“集成测试”这个词 ;-)

标签: c# unit-testing sd-card


【解决方案1】:

围绕 SD 卡框架代码编写一个包装器,提取一个接口并针对该接口开发您的代码。是的,你必须嘲笑一切,但这是干净的方式。请记住,您不必使用像 Rhino.Mocks 这样的模拟库来进行测试(人们往往会忘记)。有时为您的测试编写一个专门的假对象会使测试更容易。

编写仅在安装已知 SD 卡时通过的测试不是单元测试。

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2011-09-15
    相关资源
    最近更新 更多