在我看來,最好的方法是創建一個模型庫(所有的生產代碼),一個可執行程序和測試可執行。然後,您可以將所有生產代碼與程序和測試可執行文件鏈接起來。測試文件也存儲在測試可執行文件中。我所有的項目都有這樣的結構:
model.lib (link against both exe)
program.exe
modelTest.exe
在文件系統的具體文件夾中可以存儲測試文件和生產文件。構建工具(如cmake)應將文件分開,並將測試文件放入測試可執行文件和生產文件到模型庫中。
請看下面的例子: 我有以下文件的文件夾:
src (folder)
- main.cpp
- model.h
- model.cpp
- modelTest.cpp
一個cmake的文件看起來是這樣的:
cmake_minimum_required(VERSION 2.8)
project(TheUltimateProject)
ADD_EXECUTABLE(program main.cpp)
ADD_library(model shared model.cpp model.h)
ADD_EXECUTABLE(modelTest modelTest.cpp)
target_link_libraries(program model)
target_link_libraries(modelTest model)
如果你使用像谷歌測試框架測試,您還必須將modelTest可執行文件鏈接到gmock,並且不要忘記添加包含文件夾:
eg
link_directories($ENV{GMOCK_HOME}/Debug)
include_directories($ENV{GMOCK_HOME}/googlemock/include)
include_directories($ENV{GMOCK_HOME}/googletest/include)
target_link_libraries(modelTest gmock_main gmock)
一個簡單的方法是創建一個lib,你的應用程序將「只」具有'main',它會正常調用lib的類/函數。然後你的測試應用程序也可以鏈接到你的lib並測試它的組件。 (總共3個項目:MyLib,MyApp,MyTest)。 – Jarod42
如果您的測試是在第二個項目中,這絕對是最好的。 [這個項目](https://github.com/nholthaus/units)(我是作者)已經通過CMake加入了gtest,你可以從字面上複製/粘貼CMake文件起飛,然後看到文件夾結構的例子。 –