CMock - 多个定义

Posted

技术标签:

【中文标题】CMock - 多个定义【英文标题】:CMock - Multiple definitions 【发布时间】:2016-10-26 18:54:37 【问题描述】:

我开始从事测试驱动的 C 开发工作。

我使用 CMock 通过运行以下命令来生成我的模拟类:

ruby cmock.rb ../../../src/util.h

我目前的包结构是:

app/root
  | bin
      | *.*
  | build
      | *.*
  |- cmake
     |- modules
        |- CodeCoverage.cmake
  |- coverage
      |- *.*
  |- external
      |- Unity
      |- CMock
      |- CMakeLists.txt
  |- src
      |- *.c
      |- *.h
      |- CMakeLists.txt
  |- mocks
      |- *.c
      |- *.h
      |- CMakeLists.txt
  |- tests
      |- *.c
      |- *.h
      |- CMakeLists.txt
  |- CMakeLists.txt

我有 CMakeLists.txt 设置来将 src 编译为库:

add_library(app SHARED $SOURCE_FILES)

Tests 设置为编译为可执行文件:

add_executable(tests $TEST_SOURCES)

target_link_libraries(tests app Unity mocks)

并且 mocks 被设置为编译为库:

add_library(mocks $MOCK_SOURCES)

target_link_libraries(mocks app Unity CMock)

我已经为模拟标题尝试了多个位置并且一直在玩,但我错过了如何不出现多个定义错误的基本知识。

谁能提供一些关于我的文件结构或策略不正确之处的指导?

【问题讨论】:

【参考方案1】:

在此处查看答案:https://github.com/ThrowTheSwitch/CMock/issues/97

基本上,这一切都归结为仅链接每个测试所需的文件。使用 Unity 时,每个测试都成为自己的可执行文件。

【讨论】:

以上是关于CMock - 多个定义的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CMock 单元测试框架与 Make 集成

Cmock 无法识别函数调用

如何在 cmock 中为“读取”功能配置期望

在 CMock 中使用 ExpectWithArray 的示例

部分之间的多个自定义 TableviewCell 上的多个自定义 UICollectionView

Verilog - 将多个定义连接成一个定义