Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单元测试。文件结构 我有一个C++的传统代码库,10-15个应用程序,所有组件都共享。p>_C++_Unit Testing - Fatal编程技术网

单元测试。文件结构 我有一个C++的传统代码库,10-15个应用程序,所有组件都共享。p>

单元测试。文件结构 我有一个C++的传统代码库,10-15个应用程序,所有组件都共享。p>,c++,unit-testing,C++,Unit Testing,在为共享组件和应用程序本身设置单元测试时,我想知道是否有可接受的/通用的文件结构 因为我的单元测试有几个基类以简化特定于项目/客户的测试设置,所以有很多文件是所有测试的通用文件 在我看来,创建一个包含所有测试相关文件、mock等的新目录是很自然的,这样可以将所有内容集中化,并且还可以将测试相关定义保留在主make文件之外 另一方面,我看到通常的做法是将测试文件与其测试的代码文件放在一起 有没有一种更被接受或不被接受的方法?眼不见,心不烦;如果将测试文件与代码文件放在一起,开发人员可能会更清楚地看

在为共享组件和应用程序本身设置单元测试时,我想知道是否有可接受的/通用的文件结构

因为我的单元测试有几个基类以简化特定于项目/客户的测试设置,所以有很多文件是所有测试的通用文件

在我看来,创建一个包含所有测试相关文件、mock等的新目录是很自然的,这样可以将所有内容集中化,并且还可以将测试相关定义保留在主make文件之外

另一方面,我看到通常的做法是将测试文件与其测试的代码文件放在一起


有没有一种更被接受或不被接受的方法?

眼不见,心不烦;如果将测试文件与代码文件放在一起,开发人员可能会更清楚地看到,当他们更新代码文件时,他们也应该更新测试。

正如您所指出的,有两种常见的方法来定位单元测试文件:靠近他们正在测试的实现代码,以及在单独的文件层次结构中。选择取决于你所在组织的普遍做法和个人品味

关于常见测试代码的位置,只需组织测试代码,就可以组织实现代码


在您的特定情况下,如果一些测试基础设施对几个独立组件是通用的,那么最好创建一个其他组件测试所依赖的新组件(例如,称之为“测试”),而不是在现有组件之间添加依赖项。

我通常将此类代码组织在一个文件结构中(在一个简单的情况下)如下所示:

apps
    app1
        app1module1
        app2module2
        app1tests
    app2
        app2module1
        app2tests
components
    comp1
        comp1module1
        comp1module2
        comp1tests
common_test_stuff

没有一种正确的方法可以做到这一点,但这似乎是一种常见的做法,它将生产代码和测试代码分开,并试图同时消除看不见、想不到的问题(由zac提到)。

将测试代码放在产品代码附近,并安排生成文件(或任何您正在使用的文件)因此,测试与测试同时编译,以使它们可见,特别是在团队中不是每个人都在编写测试的情况下

app2module2
应该是
app1module2