使用 Perl Test::More 时,函数名称有约定吗?
-
09-06-2019 - |
题
使用 Perl Test::More 或 Test::Simple 模块时,函数名称是否有约定?
我特别询问用于在测试之前设置测试环境以及在成功完成测试后拆除环境的函数的名称。
干杯,
抢
解决方案
我不认为有任何这样的约定。
如果要在整个文件上使用资源,则唯一的方法可能是使用 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
其他提示
如果您正在寻找更多 XUnit 风格的测试,请查看 测试::类. 。它提供了 Test(setup)
和 Test(teardown)
设置和拆除环境的方法的属性。它还为您提供了一种更好的处理计划的方法(您可以为每个测试方法单独提供一个计划,因此计数不那么繁琐),并允许您通过测试类层次结构继承测试。
我认为没有一套正式的约定,所以我建议查看以下示例 http://perldoc.perl.org/Test/More.html 并看看他们如何编写测试。
我们更广泛地使用 Test:: 进行单元测试,因为我们的许多(大多数)数据处理脚本都是用 Perl 编写的。我们没有针对函数名称的特定约定,而是执行 Jagmal 建议的操作,即将测试分解为更小的块并在本地初始化。
在我们的例子中,每个子测试都封装在测试脚本中的单独函数中。除此之外,我们有一个框架,允许我们运行所有子测试(完整的单元测试)或调用单个子测试或子测试集以允许仅运行我们目前正在处理的子测试。
谢谢埃斯波。
我已经查看了相关的 perldocs,但是关于设置和拆卸方面没有真正的约定。
不像XUnit系列测试。
感谢 Jagmal 的回答,但我不确定是否使用 BEGIN 和 END 块进行设置和拆卸,因为您没有通过名称明确说明您在做什么。还有一个明显的问题,即每次测试仅运行一次设置运行和一次拆卸运行,即每个 .t 文件。
我快速浏览了一下 Test::Most,它看起来非常有趣,尤其是解释函数。谢谢马特。
嗯。只是进一步考虑使用 BEGIN 和 END 块,我在想如果我降低测试的粒度,以便只需要一次设置和一次拆卸,那么这将是一个很好的解决方案。
干杯,
抢
我建议的第一个约定是放弃 Test::More 并使用 Test::Most
Perl 测试脚本在任何方面都不特殊或神奇。因此,它们可以包含与任何其他 Perl 脚本完全相同的内容。
您可以为例程命名任何您想要的名称,并在测试之前、之后或与测试交织在一起调用它们。
您可以在任何测试之前拥有任意数量的初始化代码,在测试之后拥有任意数量的清理代码,以及与测试混合的任意数量的任何其他代码。
这一切都假设您正在谈论 CPAN 风格的 t/*.t 测试脚本。我想你是的,但如果我眯着眼睛看的话,我可以设法将你的问题理解为关于扩展测试工具的问题。
如果您也愿意进行验收测试,例如 Ruby 的 Cucumber - 请看一下这个小示例 http://github.com/kesor/p5-cucumber 那是使用 Test::More 和黄瓜风格的验收测试。