代码之家  ›  专栏  ›  技术社区  ›  Padu Merloti

如何使用Moq库创建SerialPort模拟?

  •  8
  • Padu Merloti  · 技术社区  · 16 年前

    我必须写很多处理串行端口的代码。通常在电线的另一端会连接一个设备,我通常创建自己的模拟来模拟它们的行为。

    我开始关注Moq来帮助我进行单元测试。当你只需要一个存根时使用它很简单,但是我想知道它是否可能,如果可能,我如何为硬件设备创建一个mock,它根据我想测试的内容做出不同的响应。

    一个简单的例子:

    与我接口的其中一个设备接收命令(移动到位置x),返回ACK消息并进入“移动”状态,直到它到达预定位置。

    我想创建一个测试,在这里我发送move命令,然后继续查询状态,直到它到达最终位置。

    我想为两个不同的测试创建两个版本的模拟,一个是我希望设备成功到达最终位置,另一个是它将失败。

    2 回复  |  直到 13 年前
        1
  •  5
  •   Stephen Cleary    16 年前

    如果程序中有一个串行端口对象的接口,那么Moq可以通过创建一个模拟串行端口对象(Moq对任何复杂的存根和模拟都有好处)。

    如果你愿意 拦截 打给BCL的电话 SerialPort 在它们到达硬件之前初始化(不必创建串行端口接口和实现,以及测试实现),然后需要更强大的功能。那就是 Moles

    如果你真的想模拟一个设备,那么这就不仅仅是“单元测试” com0com

        2
  •  0
  •   Community Mohan Dere    9 年前

    如果使用mock进行TDDing,那么应该让测试定义对象。听起来你在写任何测试之前就已经有了一个设计。

    • 命令发送器
    • 命令接收器
    • 根据推论,你必须 Timeout

    这已经是你的责任了 SerialController

    开始要轻松愉快。

    试着用 '最后一个负责任的时刻' .

    还有你要使用的语法呢?

    你可能想看看这个: how-to-test-reliability-of-my-own-small-embedded-operating-system

    顺便说一句,你的工作看起来很令人兴奋。

    推荐文章