Как я могу использовать Perl Test::Deep::cmp_deeply без увеличения количества тестов?
Вопрос
Это выглядит как Test::Deep
был вдохновлен is_deeply
.Мой вопрос в том, как мне сделать cmp_deeply
часть теста, а не тест сам по себе?Потому что в моем списке тестов указано только 8, но каждый раз, когда я использую cmp_deeply
, это считается тестом, в результате чего мое фактическое количество тестов равно 11 (потому что я называю cmp_deeply
3 раза), когда у меня всего 8 функций.Я не хочу увеличивать количество своих тестов.Есть ли более жизнеспособное решение?
Решение
Вы должны использовать eq_deeply
вместо:
Это то же самое, что
cmp_deeply()
за исключением того, что он просто возвращает true или false.Диагностики не делает...
Другие советы
Есть ряд вещей, которые вы можете сделать, но, не зная подробностей ваших тестов, трудно определить, что является наиболее подходящим:
Не планируйте определенное количество тестов.
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;