나는 펙스 테스트를 쓰려고하는데, 나는 그것이 항상 내가 원했던 매개 변수 중 하나로서 잘못된 값을주고 있다는 것을 알아 차렸다. 내 테스트는 모습이 (간체 : 거기에 더 PARAMS이/한 없지만, 그렇지 않으면 다른) : 나는 PEX를했을 경우Pex 만족스럽지 않은 코드 계약
[PexMethod]
public void TestCtor(bool value)
{
ArbitraryType myType = new ArbitraryType(value);
}
나는 value
사실이 될 것이라는 점을 보장 탐사를 할 시나리오를 테스트하고 싶었다. 나는이처럼 보였다 다른 테스트했다 :
[PexMethod]
public void TestCtor(bool value)
{
Contract.Requires(value == true);
ArbitraryType myType = new ArbitraryType(value);
}
을하지만 PEX 그 탐험이있을 때, 그것은 여전히 value
거짓에 뱉어 및 테스트가 "패스"를 생성합니다. 요구 사항이 끝난 후 라인을 추가하면 Contract.Assert(!value);
또 다른 테스트가 생성되고 value
이 true로 설정되면 실패합니다.
질문은, Pex가 코드 계약을 만족시키는 이유는 무엇입니까?
런타임의 계약 확인을 도구 -> 옵션 -> 코드 계약에서 사용했다고 가정합니다. –
@ 라이언 그로스 : 네. –