テスト数を増やさずに 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