gpt4 book ai didi

unit-testing - 我可以使用模拟对象来模拟串口吗?

转载 作者:行者123 更新时间:2023-11-30 23:50:54 26 4
gpt4 key购买 nike

我正在使用 C++/CLI 开发一个通过串行端口与设备通信的应用程序。并使用 MS Test 对其进行测试。我只是在阅读有关模拟对象的信息,并且只是从概念上理解它。我在单元测试中面临许多挑战,主要是因为我用来通过串行端口向我的应用程序发送数据的模拟器以某种方式运行,我无法让它改变它的行为。

我想知道的是:

  • 我可以使用模拟对象来模仿串行端口的行为吗?它的输入缓冲区?
  • 我可以使用模拟对象来更改串行端口的行为(即假装端口被阻塞)。
  • 模拟可以用于更基本的类吗(例如我想测试我分配数组的代码的一部分。我可以让模拟假装由于内存不足而导致内存分配失败)
  • Rhino Mocks 是否适合模拟 C++/CLI 应用程序?
  • 根据您的经验,任何其他模拟框架(最好是免费软件,但对付费软件开放)对这项任务有好处?
  • 这些是否与 MS 测试兼容。
  • 最佳答案

    我从 C 嵌入式背景回答这个问题,但我觉得你的问题在模拟方面相当笼统,答案应该适用。

    Can I use mock objects to mimic the Serial Port behaviour? its input buffer?



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

    Can I use the mock object to change the Serial Port behaviour(ie to pretend that the port >is blocked).



    这正是 mocking 的用途。只要您的代码被分为几层,即类似于
  • 硬件驱动层
  • 控制层
  • 外部模块的 API 层

  • 然后,您可以模拟模拟有效操作所需的任何层:缓冲区已满、硬件故障等。

    Can mocks be used for more basic classes(For example I want to test a part of my code > that allocates an array. Can I get the mock to pretend that memory allocation failed due to insufficient memory)



    是的,这与上一个问题类似,如果您的代码已经包装了一些内存分配代码,那么您可以模拟包装器返回的内容。也许你有一个内存管理器类型类

    Is Rhino Mocks suitable for mocking a C++/CLI application ?



    不确定

    Any other mocking frameworks (prefereably freeware but open to paid ones) that in your experience is good for this task?



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

    Are these comepatible with MS Test?



    抱歉也不知道这个

    关于unit-testing - 我可以使用模拟对象来模拟串口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5727992/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com