Test :: More POD说
Before anything else,you need a testing plan. This basically declares how many tests your script is going to run to protect against premature failure…
use Test::More tests => 23;
There are rare cases when you will not know beforehand how many tests your script is going to run. In this case,you can declare that you have no plan. (Try to avoid using this as it weakens your test.)
use Test::More qw(no_plan);
但是,在测试运行结束时没有打印结果时,可以很容易地看到过早的故障。它似乎没有帮助。
所以我有3个问题:
>默认情况下需要测试计划的原因是什么?
>有谁发现这是一个有用的和节省时间的功能?
>其他语言的其他测试套件是否支持这样的事情?
解决方法
ysth的answer连接到这个问题的一个伟大的discussion,包括分别是Test :: More和Test :: Most维护者的Michael Schwern和Ovid的评论。显然这是在perl-qa列表中每隔一段时间出现的,这是一个有争议的问题。以下是亮点:
不使用测试计划的原因
>它烦人,需要时间。
>它不值得的时间,因为测试脚本不会死,没有测试线束注意,除了在一些罕见的情况。
> Test :: More可以对测试进行计数
>如果您使用测试计划并且需要跳过测试,那么您需要额外的痛苦需要一个SKIP {}块。
使用测试计划的原因
>只需要几秒钟的时间。如果需要更长时间,您的测试逻辑太复杂。
>如果代码中有一个退出(0),您的测试将成功完成,而不运行剩余的测试用例。观察者可能会注意到屏幕输出看起来不正确,但是在自动测试套件中,它可能会被忽视。
>开发人员可能会不小心写出测试逻辑,以防止某些测试运行。
>你不能真正拥有一个进度条,没有提前知道将运行多少个测试。这是difficult通过内省单独做。
替代方案
Test :: Simple,Test::More
和Test :: Most都有一个done_testing()
方法,应该在测试脚本的末尾调用。这是我目前采取的方法。
这解决了代码中有一个退出(0)的问题。它不会解决无意中跳过测试的逻辑问题。
简而言之,使用计划更安全,但这个实际节省时间的机会很低,除非您的测试套件复杂(而且不应该复杂)。
所以使用done_testing()是一个中间位置。它可能不是一个巨大的交易,无论你的喜好。
这个功能对现实世界中的任何人都有用吗?
有几个人提到这个功能对于他们来说是有用的。这包括拉里·沃尔(Larry Wall)。 Michael Schwern says的作品来自于20多年前的Larry。
其他语言有这个功能吗?