我一直在开发一个内部框架,它是用一堆Perl模块设计的。所有这些模块都依赖于一个暴露一些Win32功能的模块。对于例如A,B,C,D等模块都依赖于单个模块Z.因此所有这些模块都将通过“使用MyFramework :: Z”导入。所有这些模块A,B,C等都可以单独使用。不依赖于任何其他框架模块。
现在,考虑到这个简单的设计 - 我如何设计我的单元测试。我打算使用Test :: More来完成所有的单元测试。我应该为每个模块编写单独的单元测试吗?有25个不同的模块属于这个框架。有什么建议吗?
答案 0 :(得分:6)
Z
的单元测试应涵盖Win32功能。
A
的单元测试应涵盖A
未涵盖的Z
功能。
重复B
,C
,D
,依此类推。
如果您发现C
,E
和G
正在做类似的事情并且您正在编写几乎相同的单元测试,那就是重构信号 - 提取常见组件到更高级别(例如,模块CEG
),然后在原始模块中离开并测试C
,E
和G
的特殊部分。
答案 1 :(得分:2)
一般来说,我首先要实现低级功能的测试,并保持对单独文件中彼此独立的模块的测试。
如果您认为能够独立于Win32环境测试代码很重要,请创建一些模拟Win32特定模块接口的模块代码(专门用于测试)。 package
语句以及一些精简函数可以很好地完成,具体取决于实际模块实际执行的操作。
答案 2 :(得分:1)