使用Perl Test :: More时是否有函数名称的约定?

时间:2008-09-05 09:51:43

标签: perl testing frameworks

使用Perl Test :: More或Test :: Simple模块时是否存在函数名约定?

我特别询问在测试之前用于设置测试环境的函数的名称,并在成功完成测试后拆除环境。

欢呼声,

罗布

8 个答案:

答案 0 :(得分:4)

如果您正在寻找更多XUnit风格的测试,请查看Test::Class。它提供了Test(setup)Test(teardown)属性,用于设置和拆除环境的方法。它还为您提供了一种更好的处理计划的方法(您可以单独为每个测试方法提供一个,因此计数不那么繁琐)并允许您通过测试类层次结构继承测试。

答案 1 :(得分:3)

我认为那里没有任何此类约定。

如果要在整个文件中使用资源,唯一可以使用的方法是使用BEGIN / END块。

我采用的一般方法是将相关测试放在一个代码块中,然后在那里初始化变量/资源等。您可以轻松计算每项功能的测试次数。

像...一样的东西。

BEGIN {
   # If you want to set some global db setting/file setting/INC changes etc
}

# Tests functionality 1...
{
     # have fun .... 
}

# Tests functionality 2...
{
     # have more fun .... 
}

END {
   # Clean up the BEGIN changes
}

另外请注意,您可能需要阅读此内容以便在perl中进行测试... http://perlandmac.blogspot.com/2007/08/using-perl-testsimple-and-testmore.html

答案 2 :(得分:1)

我认为没有一套官方惯例,所以我建议您查看http://perldoc.perl.org/Test/More.html的示例,看看如何编写测试。

答案 3 :(得分:1)

感谢Espo。

我已经看过相关的perldocs,但是关于设置和拆卸方面没有真正的约定。

不喜欢XUnit系列测试。

感谢Jagmal的回答,但我不确定是否使用BEGIN和END块来进行设置和拆卸,因为你没有明确说明你在做什么。还有一个明显的问题,即每次测试只运行一次设置和一次拆机,即每个.t文件。

我已经快速浏览了Test :: Most,它看起来非常有趣,尤其是解释功能。谢谢马特。

嗯。只是想进一步使用BEGIN和END块,我想如果我减少测试的粒度,这样只需要一个设置和一个拆卸,那么这将是一个很好的解决方案。

欢呼声,

罗布

答案 4 :(得分:1)

我们使用Test ::更广泛地进行单元测试,因为很多(大多数)数据处理脚本都是用Perl编写的。我们没有针对函数名称的特定约定,而是执行类似Jagmal建议的操作,即将测试分解为更小的块并在本地初始化。

在我们的例子中,每个子测试都封装在测试脚本中的一个单独的函数中。最重要的是,我们有一个框架,允许我们运行所有子测试(完整单元测试)或调用单个子测试或子测试集,以允许运行我们正在处理的那些。

答案 5 :(得分:0)

我建议的第一个约定是放弃Test :: More for Test :: Most

答案 6 :(得分:0)

Perl测试脚本无论如何都不是特殊或魔术。因此,它们可以包含与任何其他Perl脚本完全相同的内容。

您可以将所需的任何内容命名为例程,并在测试之前,之后和之间调用它们。

您可以在任何测试之前获得任何数量的初始化代码,在测试之后可以获得任何数量的清理代码,以及任何其他与测试混合的代码。

这一切都假设你在谈论CPAN风格的t / * .t测试脚本。我想你是,但我可以设法把你的问题看成是一个关于扩展测试工具的问题,如果我眯着眼睛看。

答案 7 :(得分:0)

如果您愿意进入验收测试,例如Ruby的Cucumber,请看一下使用Test :: More和黄瓜风格的验收测试的小例子http://github.com/kesor/p5-cucumber