如果开发人员要编写集成测试,以实际测试实际代码的全部功能,如何排除mock?它会在Makefile中吗?人们会怎么做?
发布于 2021-01-21 16:49:44
一般来说,您将构建一个调试版本(带有调试符号等,包括mock等)。用于开发/测试,以及发布版本(没有调试符号,不包括mock,有优化等)用于集成/打包/发布。
您的构建系统如何告诉您的代码您正在为集成/发布而构建,以及如何将该信息转换为所需的代码结构,这取决于您和您的构建系统。测试#ifdef NDEBUG是很常见的。
根据您的整体设置,理想情况下应该是您的开发阶段测试代码来设置您的模拟,并且您不会为集成而运行这些测试(因为这是完全不同类型的测试)。
发布于 2021-01-21 16:43:09
我使用了多态性和工厂模式: mock和real类具有相同的接口。工厂参数改变实例化的具体类(比如数据库的模拟或真实数据库)。此参数位于配置文件中。如何更改此参数取决于配置项/构建系统。我使用专门的不同测试套件来进行模拟(单元测试)、集成和功能测试。通过这种方式,该过程是自动化的,并且您的测试框架将为您提供已损坏的结果。上述出厂参数设置的每个套件(单元测试或功能)的配置。
https://stackoverflow.com/questions/65823667
复制相似问题