CMock - 多个定义

时间:2016-10-26 18:54:38

标签: c unit-testing cmake header-files cmock

我开始从事测试驱动的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})

测试设置为可执行文件编译:

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 个答案:

答案 0 :(得分:2)

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

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