私は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がコード契約を満たさないのかということです。