c++ - 模拟被测类的依赖关系

标签 c++ visual-studio unit-testing mocking embedded

我想在 Visual Studio native 单元测试项目中测试一些编写为在嵌入式处理器上运行的代码。

TestMe 类有几个适合测试的方法,但 Foo 和 Bar 类直接访问仅在嵌入式处理器上可用的内存映射寄存器。

#pragma once

#include "Foo.h"
#include "Bar.h"

class TestMe
{
public:
    TestMe(Foo& aFoo, Bar& aBar);
    ~TestMe();

    float FooBar();

};

模拟掉这些对象以便我可以测试 TestMe 类的最佳方法是什么?

编辑:对我来说,最好的方法是尽可能少地干扰正在测试的软件。

最佳答案

“最佳”总是主观的,但我喜欢使用模板进行这种模拟:

template <typename TFoo, typename TBar>
class TestMeImpl
{
public:
    TestMeImpl(TFoo& aFoo, TBar& aBar);
    ~TestMeImpl();

    float FooBar();
};

using TestMe = TestMeImpl<Foo, Bar>;

您将针对 TestMeImpl 编写单元测试,但将 TestMe 暴露给您的用户。

关于c++ - 模拟被测类的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52478352/

相关文章:

c# - 如何在另一个项目中调用一个项目中的类?

visual-studio - 如何将已删除的常规目录转换为TFS中的分支?

c++ - 如何检查文本文件是否仅包含某些字符(例如 's' ,'f' ,'#' ,'\n' )(更新)

c++ - 使用 "="运算符复制 char* 内容

.net - 如何在不需要运行 .net 框架的情况下创建 C++ 程序(如 ccleaner 和 utorrent)

node.js - 如何在 Visual Studio 2015 中禁用 NPM 包还原?

ruby-on-rails - Rspec:无论测试如何,堆栈级别都太深

java - JUnitParams - 在测试之前执行单独的方法

ios - 在 Swift 中对私有(private)变量进行单元测试

c++ - 从 vector 中删除自定义对象