gpt4 book ai didi

c - 使用 native 单元测试项目在 Visual Studio 2017 中对 C 代码进行单元测试

转载 作者:行者123 更新时间:2023-11-30 16:31:11 28 4
gpt4 key购买 nike

我想在 Visul Studio 2017 中对 C 项目进行单元测试。它是一个嵌入式项目库。我想对 lib 进行尽可能少的更改。只需在VS中编译c代码我添加了一些#ifdef WIN32。再添加一些就可以了。

开始使用 Visual C++ native 单元测试项目。但是,当想要从 C 文件测试私有(private)静态函数并在项目中注入(inject)值变量时,就会遇到问题。

  1. 将我的嵌入式项目作为静态库包含到 VS 解决方案中。 (或者应该使用动态链接库或其他东西?)
  2. 创建了 native 单元测试项目,并将其命名为 UnitTest1
  3. 在 UnitTest1 中添加了这一行,据我了解它将包含我想要测试的库。#pragma comment(lib, "../Release/Embedded.lib")
  4. 在嵌入式代码头文件中,我添加了此宏来创建我将对其执行测试的库。

    #pragma once<li>
    <code>#ifdef EXPORT_TEST_FUNCTIONS</code>
    <code>#define UNITTEST_Embedded_EXPORT __declspec(dllexport)</code>
    <code>#else</code>
    <code>#define UNITTEST_Embedded_EXPORT</code>
    <code>#endif</code></li>


  5. inline UNITTEST_ZAP_EXPORT static bool isActiv(void);
    1. In the embedded C file, I added this line #define EXPORT_TEST_FUNCTIONS and this function:

    UNITTEST_ZAP_EXPORT static bool isActiv();
    {
    return false;
    }
  6. 但是当我构建 UnitTest1 时,出现错误 LNK2001。

非常不确定如何继续使其发挥作用。谁能指导我解决我的问题?我希望能够用 C 代码测试所有函数。希望不难理解需要帮助的内容。我才发展了几年。

最佳答案

我也遇到了和你一样的问题。您需要向 Visual Studio 中的 C++ 编译器解释,当您包含 C 函数的声明时,将出现一个 C header 。因此,您的 UnitTest1.cpp 应该以以下内容开头:

extern "C" {
#include "somecode.h"
}

static_lib1.h应包含类似以下内容:

 #ifndef STATIC_LIB1_H_
#define STATIC_LIB1_H_

SWord doSomeThing();

#endif

删除在 h 和 c 文件中添加的所有额外代码以进行单元测试,这是不需要的。最好的单元测试是不对您测试的代码进行任何更改,因为单元测试需要它。

我确信这应该可以解决您的问题。

关于c - 使用 native 单元测试项目在 Visual Studio 2017 中对 C 代码进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737053/

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