看起来Test::Deep
的灵感来自于is_deeply
。我的问题是如何让cmp_deeply
部分测试而不是测试?因为我的测试列表只有8个,但每次我使用cmp_deeply
时,它都算作测试,当我只有8个函数时,我的实际测试次数为11(因为我称之为cmp_deeply
3次) 。我不想增加测试次数。有更可行的解决方案吗?
答案 0 :(得分:8)
您应该使用eq_deeply
代替:
这与
cmp_deeply()
相同 除了它只返回true或false。 它不会创建诊断...
答案 1 :(得分:2)
您可以做很多事情,但在不了解测试中的更多细节的情况下,很难知道哪个是最合适的:
不要计划特定数量的测试。
use Test::More;
all(
cmp_deeply($got0, $expected0),
cmp_deeply($got1, $expected1),
cmp_deeply($got2, $expected2)
);
# ... your other 7 tests
done_testing(); # signals that we're all done.. exiting normally.
动态确定正在运行的测试数量,如果您正在测试某些深度和动态结构,这是有意义的,这些结构的复杂性(以及所需的测试数量)事先是未知的:
use Test::More;
use Test::Deep;
# perhaps this is in some sort of loop?
cmp_deeply($got0, $expected0); $numTests++;
cmp_deeply($got1, $expected1); $numTests++;
cmp_deeply($got2, $expected2); $numTests++;
# ... your other 7 tests
# TAP output must be either at the beginning or end of all output
plan tests => $numTests + 7;
# no more tests here!
exit;