我们使用Visual Studio 2008开发C++应用程序并使用Boost.Test进行单元测试。目前,我们有一个单独的解决方案,其中包含我们的单元测试。单元测试DLL中的非导出类
我们在核心解决方案中的许多项目都生成DLL。我们的测试覆盖范围有限,因为我们无法测试非导出的类。
我对如何解决这些测试了两种思路:
- 出口一切
- 把DLL内部测试(同一项目和解决方案),并使用如Boost.Test对外亚军
我不完全确定这些缺点是什么。上面的数字1打破了模块级封装,数字2可能导致更大的DLL,除非可能只在特定配置中包含测试代码。
那么,上述方法是否存在严重缺陷,或者您能否想到其他解决方案?
我想暗示[CMake](http://www.cmake.org)提供一个称为“对象库”的功能。 ('add_library(foo_obj OBJECT ...)')在我的项目中,我将源代码构建到对象库中,然后将它们链接到* DLL('add_library(foo SHARED ... $)' )*和*它的测试驱动程序('add_executable(foo_test ... $ )')。这是使用不同构建系统的下面答案的变体(这就是为什么我将此添加为评论,而不是答案),但它解决了同样的问题。 –
DevSolar
2015-08-25 12:47:01