这是来自zlib的example.c的一部分。我最初想要使用check将此代码转换为单元测试,但后来我感到很困惑:
这些测试是否属于功能测试?或者他们也可以称为集成测试或单元测试?
test_compress(compr, comprLen, uncompr, uncomprLen);
test_deflate(compr, comprLen);
test_inflate(compr, comprLen, uncompr, uncomprLen);
test_large_deflate(compr, comprLen, uncompr, uncomprLen);
test_large_inflate(compr, comprLen, uncompr, uncomprLen);
test_flush(compr, &comprLen);
test_sync(compr, comprLen, uncompr, uncomprLen);
comprLen = uncomprLen;
test_dict_deflate(compr, comprLen);
test_dict_inflate(compr, comprLen, uncompr, uncomprLen);
答案 0 :(得分:1)
单元测试实际上也可以是集成测试。如果您的被测单元访问外部资源,那么它就是传统的集成测试。如果它访问其他单元,它也被许多人认为是一种集成测试形式(模块间,不要与组件间/服务/数据库集成混淆)。后者就是你要展示的情况 - 函数计算其他人随后消耗并进一步转换的东西。
如果测试的目的是针对特定单元(例如功能)但偶然测试其他单元,那么它也有资格作为集成测试。但是,如果除了预期的测试目标之外没有其他功能(如果需要,使用存根或模拟辅助功能),那么它只是一个单元测试 - 而不是集成测试。两种方法都没有错;这一切都取决于你想要达到的控制水平和范围宽度。单位调用的次数越多,获得的控制越多,但测试的范围越小。