单元测试。文件结构 我有一个C++的传统代码库,10-15个应用程序,所有组件都共享。p>
在为共享组件和应用程序本身设置单元测试时,我想知道是否有可接受的/通用的文件结构 因为我的单元测试有几个基类以简化特定于项目/客户的测试设置,所以有很多文件是所有测试的通用文件 在我看来,创建一个包含所有测试相关文件、mock等的新目录是很自然的,这样可以将所有内容集中化,并且还可以将测试相关定义保留在主make文件之外 另一方面,我看到通常的做法是将测试文件与其测试的代码文件放在一起单元测试。文件结构 我有一个C++的传统代码库,10-15个应用程序,所有组件都共享。p>,c++,unit-testing,C++,Unit Testing,在为共享组件和应用程序本身设置单元测试时,我想知道是否有可接受的/通用的文件结构 因为我的单元测试有几个基类以简化特定于项目/客户的测试设置,所以有很多文件是所有测试的通用文件 在我看来,创建一个包含所有测试相关文件、mock等的新目录是很自然的,这样可以将所有内容集中化,并且还可以将测试相关定义保留在主make文件之外 另一方面,我看到通常的做法是将测试文件与其测试的代码文件放在一起 有没有一种更被接受或不被接受的方法?眼不见,心不烦;如果将测试文件与代码文件放在一起,开发人员可能会更清楚地看
有没有一种更被接受或不被接受的方法?眼不见,心不烦;如果将测试文件与代码文件放在一起,开发人员可能会更清楚地看到,当他们更新代码文件时,他们也应该更新测试。正如您所指出的,有两种常见的方法来定位单元测试文件:靠近他们正在测试的实现代码,以及在单独的文件层次结构中。选择取决于你所在组织的普遍做法和个人品味 关于常见测试代码的位置,只需组织测试代码,就可以组织实现代码
在您的特定情况下,如果一些测试基础设施对几个独立组件是通用的,那么最好创建一个其他组件测试所依赖的新组件(例如,称之为“测试”),而不是在现有组件之间添加依赖项。我通常将此类代码组织在一个文件结构中(在一个简单的情况下)如下所示:
apps
app1
app1module1
app2module2
app1tests
app2
app2module1
app2tests
components
comp1
comp1module1
comp1module2
comp1tests
common_test_stuff
没有一种正确的方法可以做到这一点,但这似乎是一种常见的做法,它将生产代码和测试代码分开,并试图同时消除看不见、想不到的问题(由zac提到)。将测试代码放在产品代码附近,并安排生成文件(或任何您正在使用的文件)因此,测试与测试同时编译,以使它们可见,特别是在团队中不是每个人都在编写测试的情况下
app2module2
应该是app1module2
。