Как я могу использовать Perl Test::Deep::cmp_deeply без увеличения количества тестов?

StackOverflow https://stackoverflow.com/questions/1274756

  •  16-09-2019
  •  | 
  •  

Вопрос

Это выглядит как 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;
    
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top