我正在尝试为模块生成一些后编码UT。 模块将输入数据分类到数据库,如果发现匹配,则返回适当的值。从指定输入和预期结果的场景表生成单元测试
在建立了一个包含所有可能的输入场景及其预期结果的表格之后,我发现有超过50个测试需要创建。 由于所有测试基本上都是相同的,除了测试名称和输入之外,某种模板似乎适合于此处,从而减少了代码混乱。
我最初想象的是要么是一个创建这样一个模板的宏,并将其扩展到输入数据和预期结果的测试中,要么使用一个表示场景表的结构,并在宏的帮助下将其结束。 (我猜这里的C++模板也足够了)。
但是,我不确定这是一条正确的路径,并且想知道是否有人可以提供一些如何解决该问题的建议。 还有它如何适应TDD方法的问题..
下面是使用CppUTest的想法:
#define GEN_TEST_MOD_CLASSIFIER(GROUP_NAME, TEST_NAME, PRIORITY, isCOMPRESS, isX, EXPECTING) \
TEST(GROUP_NAME, TEST_NAME) \
{ \
int hit; \
setupDB(PRIORITY, isCOMPRESS, isX); \
hit = func(PRIORITY, isCOMPRESS, isX); \
CHECK_EQUAL(EXPECTING, hit); \
}
用例:
GEN_TEST_MOD_CLASSIFIER(Classifier_Tests, LowPriority_NoCompress_NoX__HIT, PRIO_LOW, NOT_COMPRESS, NO_X, HIT_DB)
感谢, 伊迪。