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})
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 каждый тест становится собственным исполняемым файлом.