CMake中的单元测试项目具有依赖性,没有传递依赖性?

时间:2015-07-06 06:36:39

标签: c++ unit-testing cmake ctest

我正在开展一个大项目,我们在单元测试中正确使用模拟时遇到了问题。主要问题是我们没有正确设置所有依赖项,但在解决这个问题时,我们发现由于传递依赖性,单元测试项目会获得实现的链接而不是模拟。

我认为这可以通过让它依赖于它的测试单元而不依赖它,然后是模拟,然后是你想要添加的任何明确的东西来解决,但我无法找到仅依赖于被测单元而不是依赖它。

我该如何解决这个问题?

例如,cmakefile是这样的:

add_library(UnitUnderTest $(SOURCES))
target_link_libraries(UnitUnderTest PUBLIC Sockets SomethingElse)
add_executable(TestForUnit $(TESTSOURCES))
target_link_libraries(TestForUnit PUBLIC UnitUnderTest MockSockets)

并且TestForUnit首先针对套接字进行解析(因为它是依赖项),然后在MockSockets上引起冲突,因为它与套接字具有相同的符号集。我真的不想删除所有依赖项,因为被测单元可以(并且在许多情况下)依赖于许多其他组件,然后您必须在任何地方重新指定,更不用说您无法访问包含该组件的路径。

0 个答案:

没有答案