关于c++测试的一些和代码组织相关的问题

我是一个c++新手程序员,之前大多数时候在用javascript,现在由于作业需要,我在用c++写一个project,开发环境是Xcode,我想自己做测试,但是对测试相关之前一无所知,看了这个决定用catch这个测试框架。

之前在写c++小作业的时候,要么是直接在main函数中cout<<等到提交之前再删掉,或者就新建一个cpp文件,添加上main函数,然后再把项目中的main函数临时改名(一般我是把main函数名改成main00之类的),点击XCode的运行临时测试一下,主要是出于对某一个地方的不确定性进行测试,等测试完了再改回来。

但我觉得以上所列的方式实在是蠢,让各位前辈见笑了。

现在我的项目目录是这样的(这是一个用c++实现minisql的作业):
图片描述

目前各个文件其实都是没有什么内容的,每一个文件夹代表一个模块,各个模块关系如下:

图片描述

我打算写一个部分测一个部分(比如先写BufferManager),测试没有问题了继续写下一个部分。

所以我现在关于测试文件的组织有如下几个疑问:

我是应该把测试文件放在对应的模块文件目录下呢?还是单独有一个测试文件?

各个模块是不是应该单独一个测试文件?

另外我发现我写两个测试文件的话,就算我注释掉#define CATCH_CONFIG_MAIN这个还是无法正常运行,除非把别的测试文件都注释掉。

另外等我写好了入口文件(NewSQL.cpp中有一个main函数),那该怎么运行这些测试文件?难道还是不断的注释和取消注释....

感觉自己问的问题有点太笨了,但我的确非常想知道正确的测试写法和使用是如何的,网上没有找到非常有针对性的答案,特来询问,谢谢~

(如果您觉得哪里做得不好,请指出来我会认真改正,但是请不要人身攻击,如果您的答案非常有参考价值,我也会私信您询问是否需要一定的红包报酬,学生党,聊表心意)

附catch传送门: https://github.com/philsquare...

阅读 3.3k
1 个回答

我是应该把测试文件放在对应的模块文件目录下呢?还是单独有一个测试文件?

各个模块是不是应该单独一个测试文件?

另外我发现我写两个测试文件的话,就算我注释掉#define
CATCH_CONFIG_MAIN这个还是无法正常运行,除非把别的测试文件都注释掉。

另外等我写好了入口文件(NewSQL.cpp中有一个main函数),那该怎么运行这些测试文件?难道还是不断的注释和取消注释....

测试代码和生产代码分开,命名上相关
比如类A的测试类,叫AUnitTest 或者ATest 或者AUT

各个模块测试文件分开

测试文件有自己的入口文件

关键在项目配置,测试项目以来生产代码,生产代码不以来测试代码。
两个应该是可以生产两个可执行程序。按照这样的目标配置项目

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏