问题标签 [test-more]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
562 浏览

perl - 用 Test::More 写“skip() unless ok()”可以吗?

我浏览了文档,但找不到我的查询的明确答案。

在我的许多测试中,SKIP块的执行取决于先前测试的成功。

所以,例如,这是我写的:

如果我的测试发生变化,我不想更改两个位置,所以我想要一个 DRY-er 等效项:

我最初的测试表明这两个片段是等效的。

但是,文档中的某些内容引起了我的注意:

每个SKIP块必须有标签SKIP,否则Test::More不能发挥它的魔力。

我在这里担心的是魔法可能会溢出到ok()现在,因为它在块内。

0 投票
1 回答
1592 浏览

perl - TAP中的等待状态有什么意义?

这是一个比其他任何问题都更符合我理解的问题。我过去Test::More常常通过TAP::Harness.

当测试运行时,它会返回一个退出代码和一个等待代码。

Test::More 根据文档,退出代码旨在在失败时返回非零值。

但是等待代码意味着什么?对于我正在运行的测试,它似乎是失败测试数 (256 * n) 的倍数。

我的猜测是该协议试图模拟 Unix 上的父子进程关系,但我对等待代码一无所知。

0 投票
1 回答
313 浏览

perl - Coro测试::更多

我有一个正在工作的 Coro 程序,我正在为其编写测试脚本

这是我尝试测试的简化版本

这给了我

我的(真实的)程序关闭了协程,然后他们就睡着了,他们无事可做,所以这不是一个人为的例子。

感激地收到任何帮助。(我认为 unloop 和 EV::run 不是必需的)

0 投票
1 回答
117 浏览

perl - 如何使用 Test::More 和朋友自动测试继承的行为?

语境:

假设我有一些相互继承的模块(使用老式继承baseand parent,而不是 Moose 或类似的)。Foo::Bar继承FooFoo::Bar::Baz继承Foo::Bar。所有这些模块都有用Test::More. 子类的测试套件只测试它实现的方法。子类不一定会覆盖其父类中的所有方法,尽管它们可能会添加其父类没有的新方法。

问题:

是否有一些测试框架、技术或Test::More功能可以用来编写测试,这些测试不仅可以测试特定于子类的行为,而且还可以为任何继承的行为/父类运行测试套件?基本上,我正在寻找允许我为子类的独特/特殊行为编写测试的东西,但也将测试并确保子类在测试中的行为与其父类预期的行为相同.

我试过的:

我用生成器方法编写了一个非常简单的测试工具,该方法构建字符串指定模块的实例并根据请求的模块类型对其运行测试(有一个中央哈希跟踪子类/超类层次结构) ,但这似乎很粗糙。我假设(就像我需要在 Perl 中做的大多数事情一样),其他人已经以更优雅和更健壮的方式完成了这项工作。

0 投票
1 回答
83 浏览

perl - 在 Test::More 中的 eval 期间保护全局变量

我滚动浏览 Test::More 的代码,因为我想看看是如何实现的(use_ok以及require_ok为什么 Ovid 不喜欢它们)。我来到了_eval子例程,其中包含一些我不完全理解的特殊逻辑,用于在eval调用期间保护变量。我从Try::Tiny的文档中了解到处理$@. 但是,我不明白和的处理$!$SIG{__DIE__}下面逐字复制块):

的处理$SIG{__DIE__}RT #34065有关,但我仍然不明白。为什么有必要在最后一行再次设置变量,因为它应该总是在块的最后一行设置?如果这些行的全部目的是将变量设置为eval调用中的任何内容,那么为什么必须首先将其本地化?

另外,如果使用eval不破坏错误变量意味着本地化$@and $!,我们是否也不必本地化$?

0 投票
1 回答
161 浏览

perl - 如何将默认 Module::Build / Test::More 目录从“lib”更改为其他目录?

使用这篇关于 Perl 单元测试和代码覆盖率的帖子中的目录和文件架构(顺便说一句,这非常有帮助),我将运行单元测试和代码覆盖率的文件复制到一个新的“lib”目录中,它的工作方式类似于魅力!

但是,我需要该模块在现有的“脚本”目录中查找..

我已经梳理了CPAN上的 Module::Build 文档,但仍然出现Can't find file lib/processBuildSubs.pm错误

这是我到目前为止所拥有的......

更新!

也刚试过这个..

我猜有一些进展,它似乎正在寻找lib/scripts/..,但仍然不是我需要的..

更新!

有点像黑客工作,但现在它对我有用..

我运行这个脚本来更改目录名称,运行测试/覆盖并改回目录名称......有人有更好的想法吗?

0 投票
1 回答
1318 浏览

perl - Devel::Cover 合并 Perl 脚本和模块的覆盖率数据

我在合并数据以覆盖 Perl 脚本和模块时遇到问题。单独运行 Devel::Cover 工作得很好,但是当我尝试合并数据时,我丢失的只是 Perl 脚本而不是模块的统计信息。

让我解释..

我有一个看起来像这样的目录树..

在根 Code_Coverage_Test 目录中,我有 Build.pl 文件,该文件为模块和脚本构建测试,该脚本启动另外两个脚本,为我自动执行一些命令。

./Build.pl

./startTests.sh

在 lib 目录中,我有我试图在其上运行代码覆盖率的文件。

lib/testPLCoverage.pl

库/testPMCoverage.pm

在 t 目录中,我有模块的 .t 测试文件和 2 个为我启动测试的脚本。这两个脚本都由根目录中的 startTests.sh 调用

t/testPMCoverage.t

t/doPLtest.sh

t/doPMtest.sh

我遇到的问题是,当 doPLtests.sh 脚本运行时,我得到了覆盖率数据,没问题..

但是,当 doPMtest.sh 脚本完成并且 startTests.sh 脚本启动 Build testcover 命令时,我会丢失该数据并收到这些消息...

..不知何故我丢失了数据

如何结合 Perl 模块和 Perl 脚本测试以在一个文件中获得有效的代码覆盖率?

0 投票
1 回答
54 浏览

perl - 如何在没有 t/*.t 结构的情况下运行 perl 测试(t/sub_folder/*.t)

我尝试通过 Makefile.PL 或 Build.PL 收集我的代码并管理我的 perl 项目,一切顺利,我得到了 TAP 格式的正确测试结果。但是我想在 t/ 文件夹下创建一些子文件夹来收集不同的测试文件,然后我发现当我运行时make test./Build test或者prove,他们说no tests。有没有办法解决这个问题?

0 投票
1 回答
126 浏览

perl - 构建模块时测试失败

我目前正在构建一个库以在 Project Euler 谜题中实现。我已经到了构建测试的地步,但在某些时候我的测试失败了。一切都可以导入,但是一旦我测试是否存在子例程,我新创建的测试就会失败。我最初启动了 Test::More,但为了简化我切换到 Test::Simple 的事情。每次运行时,即使在简化为不太复杂的测试功能后,我也会得到相同的错误输出。我的代码中是否有一些我忽略的错误,或者我的系统或环境的某些方面会影响到这一点?

注意:除了 Test::Simple 和 Test::More 文档之外,我还多次查看了 Test::Tutorial。我还确保查看 Perl 文档以了解相关功能(已定义并存在)。在 Ubuntu 14.04 上使用 Perl 5.18.2。

这是输出:

顺便说一句,没有什么面向对象的……至少到目前为止。我也做了一个虚拟测试,解释了 2 个子测试。

测试本身(更新以明确库位置):

来自模块本身的子程序,使用模块启动器:

让我知道是否有需要。

0 投票
1 回答
1045 浏览

perl - 无法检测到“因子”的来源。为什么?

当我尝试和时,我得到以下回溯prove factorial

这是我的factorial.pm

我的factorial.t

我通过运行这个程序验证了我的factorial模块工作正常(或者,至少,正确地做一件事)。