perl - 我如何告诉 CPAN 测试人员如何为我的测试设置环境?

标签 perl testing cpan

我正在编写需要安装和运行外部软件(Amazon 的本地 DynamoDB 服务器)的测试。有什么办法可以告诉CPAN Testers怎么办?

或者我应该只下载服务器并在测试设置中自己启动它吗?这将需要安装 Java 6.x 或更新版本。所以我想我又回到了第一个问题。

如果人们不知道,CPAN 测试人员是一群使用称为 smoker 的自动化脚本测试所有 CPAN 的人员。

更多背景:

现在,CPAN Testers显示有 227 台机器通过了 Amazon::DynamoDB 的所有测试,但这具有误导性,因为当前正在运行的七千多个测试中只有一个:use_ok( 'Amazon::DynamoDB' );。其余的隐藏在 unless 语句后面:

unless ( $ENV{'AMAZON_DYNAMODB_EXPENSIVE_TESTS'} ) {
    plan skip_all => 'Testing this module for real costs money.';
}

还有大量的测试do not pass .我已经解决了这个问题,但是测试需要在测试人员的环境中设置三个环境变量和金钱(当前方式):

AMAZON_DYNAMODB_EXPENSIVE_TESTS=1
EC2_ACCESS_KEY=<user's AWS access key>
EC2_SECRET_KEY=<user's AWS secret key>

或安装本地版本的 Amazon DynamoDB。如果此模块按原样发布,它将在其运行的所有未设置必备环境的机器上显示为已损坏(即,它将错误地显示为已损坏,而不是错误地显示为正常工作)。

最佳答案

CPAN 测试器运行的测试与您的模块在安装时将运行的测试相同。你的测试应该在机器上安装其他软件吗?可能不会。相反,当不满足先决条件时,测试应该大声失败。

您还应该区分作者测试和安装测试。不期望安装测试验证所有功能。昂贵的测试(在这种情况下,实际上是花钱的测试)不应该是其中的一部分。您可以在发布前自行运行它们。但是,最好将它们放在 xt/ 中并使用 EXTENDED_TESTING 变量而不是非标准环境变量来保护它们。另见 Lancaster Consensus用于在 Perl 项目测试期间讨论各种环境变量。

您还可以考虑使用不同的提供商进行比捐赠的 CPAN 测试人员容量更彻底的测试,例如通过为您的项目设置 Travis CI。由于它们为您提供了一个容器供您使用,因此您可以安装额外的软件。您还可以安全地为您的测试提供凭据。相比之下,CPAN 测试仪的主要优势是操作系统范围广泛,即缺乏对测试环境的控制

关于perl - 我如何告诉 CPAN 测试人员如何为我的测试设置环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50773949/

相关文章:

perl - 有没有什么方法可以在没有计划的情况下使用 Test::More 中的 diag() ?

perl - 如何安全地为 Perl 5.8.9 编译 Perl 5.12 模块?

c# - Web 测试使用响应中的值作为下一个请求的参数

linux - 在 @INC 中找不到 File/Find/Rule.pm

xml - 在 Perl 中对 XML 数据进行 XPath 查询的最简单方法是什么?

regex - 有没有办法在单个语句中将某个函数的返回值编译成正则表达式?

Perl 一行提取多行模式

testing - 确定系统是否将运行应用程序的测试的名称是什么?

testing - PyCharm:如何在所有打开的项目中运行测试?

perl - CPAN 模块需要什么 perl 版本?