gpt4 book ai didi

unit-testing - 我如何告诉 Makemaker 并行运行测试?

转载 作者:行者123 更新时间:2023-12-05 04:55:48 27 4
gpt4 key购买 nike

我有一个带有 MakeMaker 生成的 Makefile 的模块,我想并行运行我的单元测试 (make test)。 Test::Harness接受例如 HARNESS_OPTIONS=j4 使用 4 个线程。但我看不出如何 MakeMaker's test可以调整目标以设置此变量。

现在我可以在我的 ~/.bashrc 中导出 HARNESS_OPTIONS=j4 但在使用 Test::Harness 的每个测试运行中强制执行它似乎很奇怪。如果我有不应在另一个项目中并行运行的测试怎么办?

使用 make -j4 test 我没有看到任何改进。 进行测试 运行

PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/*/*.t

所以我猜即使make会使用多线程,Test::Harness可能不支持这个,或者make可能不会将这个信息传递给Test::Harness .

目前这只是为了加快我的测试速度。我的模块是一个内部模块,我不太担心将此选项强加给模块的任何用户。但是,如果我可以在例如我未发布的配置文件中定义此选项,那也可以。

说到配置文件:我可以运行 prove -j4 t/ 并并行运行测试。因此,一个选项是告诉 MakeMaker 使用 prove 运行测试,但我也没有看到配置它的方法。

我如何告诉 MakeMaker 并行运行该项目的测试?

最佳答案

查看 MakeMaker 的代码后,似乎没有办法明确告诉 MakeMaker(始终)并行运行测试。它只是将问题中提到的行输出到 makefile,唯一可配置的内容是冗长的,以及要运行的测试文件。

但是,如果您只想为单个测试运行设置一个环境变量,那么 HARNESS_OPTIONS 可以很好地用于此目的,只需在运行前在您的终端中设置它

export HARNESS_OPTIONS=j4
make test

这将使该选项在该终端 session 中持续存在,或者对于单个命令,make HARNESS_OPTIONS=j4 test 将作为一个单行程序工作。

(我最初是在自己找同样的东西时发现这个问题的,但是忽略了问题中的HARNESS_OPTIONS,所以我把这个留在这里作为其他人的引用:https://perldoc.perl.org/Test::Harness#HARNESS_OPTIONS)

关于unit-testing - 我如何告诉 Makemaker 并行运行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65176521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com