2008-09-05 37 views

回答

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

1

谢谢埃斯波。

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

不像XUnit系列的测试。

感谢您的回答Jagmal,但我不确定如何使用BEGIN和END块进行设置和拆卸,因为您没有清楚地说明您的名字。还有一个显而易见的问题,即每个测试只有一个安装运行和一个拆卸运行,即每个.t文件。

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

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

欢呼声,

罗布

1

我们使用测试::更广泛地为我们的单元测试很多(大部分)我们的数据处理脚本都是用Perl编写的。我们对函数名称没有特定的约定,而是像Jagmal建议的那样做,即将测试分成更小的块并在本地初始化。

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

0

我建议首先约定开沟测试::更多测试::热门

+2

应该指出,Test :: Most使用Test :: More(和其他Test :: *模块)。测试::大多数只是通过将额外的测试函数导出到您的名称空间来帮助您。 – JDrago 2009-03-17 17:39:14

0

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

你可以命名任何你想要的例程,并在测试之前,之后和之间调用它们。

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

这一切都假定你在谈论CPAN风格的t/*。t测试脚本。我认为你是,但如果我眯起右手,我可以设法将你的问题解读为扩展测试线束。

4

如果您正在寻找更多的XUnit式测试,请查看Test::Class。它为方法提供了Test(setup)Test(teardown)属性,可以设置和拆除您的环境。它还为您提供了更好的处理计划的方法(您可以为每个测试方法分别提供一个方法,因此计算更为简便),并允许您通过测试类层次结构继承测试。

相关问题