首页 > 解决方案 > 假函数框架“发现一个或多个多重定义的符号”

问题描述

我正在使用 Fake Function Framework 来伪造 .c 文件中的函数并在我的 .cpp 单元测试文件中对其进行测试。

#include "..\fff.h"
extern "C"
{
    #include "ioDigitalInput.h"
}


DEFINE_FFF_GLOBALS;

FAKE_VALUE_FUNC(bool, ioFunc);

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTestfff
{
    TEST_CLASS(UnitTestfff)
    {
    public:
        
        TEST_METHOD(TestMethod1)
        {

        }
    };
}

函数 ioFunc 返回一个布尔值并将 void 作为输入。

当我尝试构建代码时,出现以下错误:“找到一个或多个多重定义的符号”和“ioFunc 已在 ioDigitalInput.obj 中定义”

我究竟做错了什么?

标签: cvisual-studiounit-testingmockingfake-function-framework

解决方案


线

FAKE_VALUE_FUNC(bool, ioFunc);

在您的.cpp 单元测试文件中定义(假)函数ioFunc。对象文件ioDigitalInput.obj还包含(可能不是假的)定义ioFunc,并且您尝试将此对象与编译的测试链接,因此ioFunc多重定义的。要么不要尝试链接ioDigitalInput.obj ,要么按照fff README中的描述使用弱属性标记假货。


推荐阅读