0

私はpexテストを作成しようとしていますが、必要なパラメーターの1つとして常に誤った値をフィードしていることに気付きました。私のテストは次のようになりました(簡略化:パラメータが多い/ありましたが、それ以外は違いはありません):

[PexMethod]
public void TestCtor(bool value)
{
    ArbitraryType myType = new ArbitraryType(value);
}

私は、pexに探索を行わせ、それvalueが真実であることを確認するシナリオをテストしたかったのです。私は次のような別のテストを行いました:

[PexMethod]
public void TestCtor(bool value)
{
    Contract.Requires(value == true);

    ArbitraryType myType = new ArbitraryType(value);
}

しかし、私がPexにそれを調査してもらったとき、それはまだfalseに唾を吐き、valueそれが生成するテストは「合格」です。要件の後に「Contract.Assert(!value);別のテストを作成valueし、アサーションに失敗するためにtrueに合格する」という行を追加すると、

問題は、なぜPexがコード契約を満たさないのかということです。

4

1 に答える 1

1

Pexがテストメソッドでコントラクトをどのように処理するかはわかりませんが、それが良いことであるとは思えません:)

Pexにこれを実行させたい場合、正しいことはを使用することPexAssume.IsTrue(value)です。

于 2011-07-29T02:55:59.917 に答える