2009-08-13 9 views
0

Test::Deepのように見えたのはis_deeplyです。私の質問は、自分でテストの代わりにcmp_deeplyをテストの一部にするにはどうすればいいですか?私のテストリストは8だけだから、cmp_deeplyを使うたびに、私は8つの機能しか持たないので、私の実際のテスト数は11(私はcmp_deeplyを3回呼んでいるので)です。私は自分のテストの数を増やしたくありません。より実行可能なソリューションはありますか?テスト数を増やさずにPerlのTest :: Deep :: cmp_deeplyを使うにはどうすればいいですか?

+0

なぜあなたはテストカウントを増やしたくないのですか?もしあなたが好きなら、あなたはすでにあなたのテストの数を増やしています。 –

答えて

8

代わりeq_deeplyを使用する必要があります。それだけでtrueまたはfalseを返す以外

これはcmp_deeply() と同じです。 それは診断を作成しません...

+0

これは本当に質問に答えるものではありませんか?出力の有無にかかわらず、テストの数はeq_deeplyとcmp_deeplyの間で同じになります。 – Ether

+1

いいえ、 'eq_deeply' *はtrueまたはfalseを返します。*テストハーネスに何も報告しません。 –

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; 
    
関連する問題