使用Perl Test :: More或Test :: Simple模块时是否存在函数名约定?
我特别询问在测试之前用于设置测试环境的函数的名称,并在成功完成测试后拆除环境。
欢呼声,
罗布
答案 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。