如何在同一分发中为多个Perl模块设计单元测试?

时间:2010-02-02 23:17:48

标签: perl unit-testing

我一直在开发一个内部框架,它是用一堆Perl模块设计的。所有这些模块都依赖于一个暴露一些Win32功能的模块。对于例如A,B,C,D等模块都依赖于单个模块Z.因此所有这些模块都将通过“使用MyFramework :: Z”导入。所有这些模块A,B,C等都可以单独使用。不依赖于任何其他框架模块。

现在,考虑到这个简单的设计 - 我如何设计我的单元测试。我打算使用Test :: More来完成所有的单元测试。我应该为每个模块编写单独的单元测试吗?有25个不同的模块属于这个框架。有什么建议吗?

3 个答案:

答案 0 :(得分:6)

Z的单元测试应涵盖Win32功能。

A的单元测试应涵盖A未涵盖的Z功能。 重复BCD,依此类推。

如果您发现CEG正在做类似的事情并且您正在编写几乎相同的单元测试,那就是重构信号 - 提取常见组件到更高级别(例如,模块CEG),然后在原始模块中离开并测试CEG的特殊部分。

答案 1 :(得分:2)

一般来说,我首先要实现低级功能的测试,并保持对单独文件中彼此独立的模块的测试。

如果您认为能够独立于Win32环境测试代码很重要,请创建一些模拟Win32特定模块接口的模块代码(专门用于测试)。 package语句以及一些精简函数可以很好地完成,具体取决于实际模块实际执行的操作。

答案 2 :(得分:1)

你可以做几件事:

  1. 开始写它们! ;)
  2. 每个模块进行一次测试(如您所建议的那样)并尝试“仅”测试您正在测试的代码。 (听起来很明显,但很容易开始考虑与其他模块的交互)
  3. 查看CPAN上的模块测试示例
  4. 了解BDDTDD