代码之家  ›  专栏  ›  技术社区  ›  John

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

  •  5
  • John  · 技术社区  · 14 年前

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

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

    3 回复  |  直到 14 年前
        1
  •  6
  •   mob    14 年前

    单元测试 Z 应该包括win32功能。

    单元测试 A 应该包括 不包括在 Z 。 重复 B , C , D ,等等。

    如果你发现了 C , E G 正在做类似的事情,并且您正在编写几乎相同的单元测试,这是重构的信号——将公共组件提取到更高的级别(例如,模块 CEG )离开这里测试一下 C , e G 在他们最初的模块中。

        2
  •  2
  •   hillu    14 年前

    一般来说,我将从实现低级功能的测试开始,并将设计为相互独立的模块的测试保存在单独的文件中。

    如果您认为能够独立于win32环境测试代码很重要,请创建一些模拟win32特定模块接口的模块代码(专门用于测试)。一 package 语句和一些精简的函数可能做得很好,这取决于真正的模块实际做了什么。

        3
  •  1
  •   mtmk    14 年前

    你可以做几件事:

    1. 开始写吧!;)
    2. 每个模块一个测试(如您所建议的),并尝试只测试您正在测试的代码。(听起来很明显,但是很容易开始考虑与其他模块的交互)
    3. 查看cpan上的模块测试以获取示例
    4. 了解 BDD TDD