我正在编写需要安装和运行外部软件(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/