Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为同一发行版中的多个Perl模块设计单元测试?_Perl_Unit Testing - Fatal编程技术网

如何为同一发行版中的多个Perl模块设计单元测试?

如何为同一发行版中的多个Perl模块设计单元测试?,perl,unit-testing,Perl,Unit Testing,我一直在开发一个内部框架,它是用一堆Perl模块设计的。所有这些模块都依赖于公开某些Win32功能的单个模块。例如,A、B、C、D等模块都依赖于单个模块Z。因此,所有这些模块都将通过“use MyFramework::Z”导入。所有这些模块A、B、C等都可以单独使用&不依赖于任何其他框架模块 现在,考虑到这个简单的设计——我如何设计我的单元测试。我计划使用Test::More来完成所有的单元测试。我应该为每个模块编写单独的单元测试吗?有25个不同的模块属于这个框架。有什么建议吗?针对Z的单元测试

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


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

针对
Z
的单元测试应该涵盖Win32功能

A
的单元测试应涵盖
A
的功能,而
Z
中未涵盖该功能。 对
B
C
D
等重复上述步骤


如果您发现
C
E
G
正在做类似的事情,并且您正在编写几乎相同的单元测试,那么这就是重构的信号——将通用组件提取到更高的级别(例如,模块
CEG
),只需离开并测试
C
E
,即可,和
G
在其原始模块中。

您可以做以下几件事:

  • 开始写吧!;)
  • 每个模块进行一次测试(如您所建议的),并尝试“仅”测试您正在测试的代码。(听起来很明显,但很容易开始考虑与其他模块的交互)
  • 查看CPAN上的模块测试以获取示例
  • 了解和

  • 通常,我会从实现底层功能的测试开始,并将设计为相互独立的模块的测试保存在单独的文件中


    如果您认为能够独立于Win32环境测试代码很重要,请创建一些模拟Win32特定模块接口的模块代码(专门用于测试)。一个
    语句和一些精简的函数可能会很好地解决问题,这取决于实际模块的实际功能。

    感谢您的所有建议。