如何为同一发行版中的多个Perl模块设计单元测试?
我一直在开发一个内部框架,它是用一堆Perl模块设计的。所有这些模块都依赖于公开某些Win32功能的单个模块。例如,A、B、C、D等模块都依赖于单个模块Z。因此,所有这些模块都将通过“use MyFramework::Z”导入。所有这些模块A、B、C等都可以单独使用&不依赖于任何其他框架模块如何为同一发行版中的多个Perl模块设计单元测试?,perl,unit-testing,Perl,Unit Testing,我一直在开发一个内部框架,它是用一堆Perl模块设计的。所有这些模块都依赖于公开某些Win32功能的单个模块。例如,A、B、C、D等模块都依赖于单个模块Z。因此,所有这些模块都将通过“use MyFramework::Z”导入。所有这些模块A、B、C等都可以单独使用&不依赖于任何其他框架模块 现在,考虑到这个简单的设计——我如何设计我的单元测试。我计划使用Test::More来完成所有的单元测试。我应该为每个模块编写单独的单元测试吗?有25个不同的模块属于这个框架。有什么建议吗?针对Z的单元测试
现在,考虑到这个简单的设计——我如何设计我的单元测试。我计划使用Test::More来完成所有的单元测试。我应该为每个模块编写单独的单元测试吗?有25个不同的模块属于这个框架。有什么建议吗?针对
Z
的单元测试应该涵盖Win32功能
A
的单元测试应涵盖A
的功能,而Z
中未涵盖该功能。
对B
、C
、D
等重复上述步骤
如果您发现
C
、E
和G
正在做类似的事情,并且您正在编写几乎相同的单元测试,那么这就是重构的信号——将通用组件提取到更高的级别(例如,模块CEG
),只需离开并测试C
、E
,即可,和G
在其原始模块中。您可以做以下几件事:
通常,我会从实现底层功能的测试开始,并将设计为相互独立的模块的测试保存在单独的文件中
如果您认为能够独立于Win32环境测试代码很重要,请创建一些模拟Win32特定模块接口的模块代码(专门用于测试)。一个
包
语句和一些精简的函数可能会很好地解决问题,这取决于实际模块的实际功能。感谢您的所有建议。