C++ 寻求对单元测试C+的建议+;应用程序分布在几个DLL上
新的单元测试,并有一个应用程序,是分散在几个DLL。对应用程序的单元测试有什么建议?如果我将单元测试放在它们自己的项目中,我只能测试每个dll的已发布接口。大多数人都是这样做的吗?或者我应该把单元测试和DLL中的代码放在一起,然后在那里进行测试?在这一点上协调所有测试的最佳方式是什么 我看到的大多数使用各种框架的示例都没有真正解决这个问题,我在其他地方搜索过,但没有找到太多信息 谢谢 更新: 我想澄清一下,我有一个dll中的类a和类B。A类使用B类,但仅暴露A类。我想在重构现有代码之前先进行单元测试。C++ 寻求对单元测试C+的建议+;应用程序分布在几个DLL上,c++,unit-testing,dll,C++,Unit Testing,Dll,新的单元测试,并有一个应用程序,是分散在几个DLL。对应用程序的单元测试有什么建议?如果我将单元测试放在它们自己的项目中,我只能测试每个dll的已发布接口。大多数人都是这样做的吗?或者我应该把单元测试和DLL中的代码放在一起,然后在那里进行测试?在这一点上协调所有测试的最佳方式是什么 我看到的大多数使用各种框架的示例都没有真正解决这个问题,我在其他地方搜索过,但没有找到太多信息 谢谢 更新: 我想澄清一下,我有一个dll中的类a和类B。A类使用B类,但仅暴露A类。我想在重构现有代码之前先进行单元
因此,问题是我是否应该将单元测试与dll代码放在一起,直接测试A类和B类,和/或将单元测试放在一个单独的项目中,并通过公开的A类测试A类和B类?我的方法是构建两个不同的目标:
- DLL本身
- 测试可执行文件
如果代码对DLL公开的函数没有贡献,则将其从代码库中删除。如果是这样,那么您可以编写一个测试来执行该代码路径。一般来说,彻底测试DLL的公共接口就足够了,正如Pete所指出的,应该确实执行所有代码路径
关于Neils的回答,选择一个不需要构建EXE,而是直接在DLL上运行的测试框架可以进一步简化问题。作为CFIX的作者,我自然推荐给CFIX一个尝试: < P>单元测试在C++中意味着相当于类测试。DLL测试更像是集成测试。两者都是必要的,但最好在尽可能低的级别上进行测试。看看v-model:。我用来测试DLL和可执行文件。我为每个要测试的dll和exe创建一个单独的单元测试项目/可执行文件。因为我测试dll的内部结构,所以我不会将它们与测试项目链接,而是将要直接测试的源代码包含在项目中。最后,自动构建运行所有单元测试项目 我们用来构建我们的项目,这有一个很好的组件CTest,它为我们打包了所有的测试,并作为一个组运行它们
#ifdef TESTING
tests here
#endif