0

関数の実行を分析するために Pex を使用しています。ただし、デフォルトのパラメーターが表示されていないことに気付きました。

これが私が意味することの例です:

public int bla(int x = 2)
{
    return x * 2;
}

Pex を実行すると、 のテスト ケースが生成されint result = bla(0);ます。( x = 0)
Pex にパラメータなしで呼び出しを試みるように指示する方法はありますかbla((つまりint result = bla())?

4

1 に答える 1

1

IntelliTest/Pex の第 1 のルールは、コード カバレッジを拡大しようとすることです。すべてのステートメントがカバーされている場合、Pex は停止します。

テスト メソッドなど、x=2 の場合にのみカバーされるコードを追加する方法は多数あります。これは私のために働いた最も簡単なものかもしれません:

    [PexMethod]
    public int bla([PexAssumeUnderTest]Class1 target, int x)
    {
        if(x == 2)
        {
            PexAssert.ReachEventually();
        }
        int result = target.bla(x);
        return result;
        // TODO: add assertions to method Class1Test.bla(Class1, Int32)
    }

探索結果ウィンドウに次のように表示されます。

    x      result
    0      0
    2      4

Pex ですべてのデフォルト パラメーターのテスト ケースを自動的に生成する方法を知りません。

実際の製品コードでは、コードでデフォルト値が使用される可能性が非常に高いため、この問題に頻繁に遭遇することはありません。

また、すべてのコード パスが Pex でカバーされている場合、既定値を使用するかどうかは本当に問題になるのでしょうか?

値を指定して、または指定せずに「bla」を呼び出すメソッドをテストすることは、おそらくより重要です。

于 2015-11-14T17:15:58.523 に答える