2011-04-20 218 views
3

我正在开发C++/CLI中的应用程序,通过串行端口与设备进行通信。并使用MS Test对其进行测试。我只是在阅读有关模拟对象的知识,只是从概念上理解它。我在单元测试中面临很多挑战,主要是因为我用来通过串口将数据发送到我的应用程序的模拟器行为有特定的方式,我不能让它改变它的行为。我可以使用模拟对象来模拟串口吗?

我想知道的是:

  • 我可以使用模拟对象来模拟串行端口的行为吗?它的输入缓冲区?
  • 我可以使用模拟对象来更改串行端口行为(即假装端口被阻止)。
  • 可以嘲笑更多的基本类(例如,我想测试我的代码分配一个数组的一部分,我可以得到模拟假装内存分配失败,由于内存不足)
  • 是Rhino Mocks适合模拟C++/CLI应用程序?
  • 任何其他嘲笑框架(优先免费,但开放付费),在你的经验是好的这项任务?
  • 这些是否与MS Test兼容?
+1

当然不是你可以嘲笑它。但是,如果没有其行为的** **完整规范,你将不能够以模拟真实的设备进行通信的所有细微之处。在大多数情况下,这并不重要,但我不能判断你的情况。 – 2011-04-21 03:26:08

+0

我刚才提出这个模块https://serialmock.readthedocs.org(有点晚了,我知道......但我仍然需要这一点,并无法找到任何东西,做到这一点) – 2017-04-10 19:29:03

回答

4

我从C嵌入式背景回答这个问题,但我觉得你的问题在嘲笑方面相当一般,而且答案应该适用。

我可以使用模拟对象来模拟串行端口行为吗?其输入 缓冲?

是这里是一个嘲弄UART的一个很好的例子: http://throwtheswitch.org/white-papers/when-bad-code-runs-green.html

我可以使用模拟对象,以改变串行端口的行为(即假装端口>被阻止)。

这正是嘲笑的目的。只要你的代码被划分成即东西层像

  • 硬件驱动层
  • 控制层
  • 外线模块

  • API层,然后,你可以嘲笑取其所需层模拟有效操作:缓冲区满,硬件故障等。

    可以将mock用于更基本的类(对于exa我想测试我的代码的一部分>分配一个数组。我可以得到模拟假装内存分配由于内存不足而失败)

    是的,这与上一个问题类似,包装。也许你有一个内存管理器类型

    Rhino Mocks是否适合模拟C++/CLI应用程序?

    不知道这

    任何其他嘲讽框架(prefereably免费开放,但所支付的),在你的经验是很好的完成这个任务?

    上面链接的例子是来自unity + CMock + Ceedling(主要是C测试框架)。它是开源的,并且适用于嵌入式C应用程序。不确定在C++支持。

    难道这些comepatible与MS测试?

    对不起不知道这一个

  • +0

    的嘲笑UART例子中的链接被打破...... ..任何人都有内容? – Derek 2016-06-07 12:31:16

    +0

    @Derek [互联网档案镜(https://web.archive.org/web/20150307164046/http://throwtheswitch.org/white-papers/when-bad-code-runs-green.html) – beerbajay 2016-08-28 23:41:15