2011-07-28 4 views
0

나는 펙스 테스트를 쓰려고하는데, 나는 그것이 항상 내가 원했던 매개 변수 중 하나로서 잘못된 값을주고 있다는 것을 알아 차렸다. 내 테스트는 모습이 (간체 : 거기에 더 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가 코드 계약을 만족시키는 이유는 무엇입니까?

+0

런타임의 계약 확인을 도구 -> 옵션 -> 코드 계약에서 사용했다고 가정합니다. –

+0

@ 라이언 그로스 : 네. –

답변

1

나는 PEX는 시험 방법에서 계약과 함께 할 것입니다 모르겠어요,하지만 난 그게 좋은 것 :

당신이 PEX이 작업을 수행하려면 올바른 것 인 볼 수 없습니다 할일은 PexAssume.IsTrue(value)입니다.