2011-07-28 38 views
0

我正在嘗試編寫一個pex測試,並且我注意到它始終在提供一個虛假值作爲我想要的參數之一。我的測試看起來像這樣(簡化:有/更PARAMS,但在其他方面沒有什麼不同):Pex不能滿足代碼合同

[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的探索,它仍然在假吐出來value和測試生成「通行證」。如果我在要求說Contract.Assert(!value);之後放了一條線,它會創建另一個測試並通過value來判斷失敗。

問題是,Pex爲什麼不滿足代碼合同?

+0

我假設您已經在運行系統的工具 - >選項 - >代碼合同下啓用了合同檢查? –

+0

@Ryan Gross:是的。 –

回答

1

我不知道是什麼的Pex會與測試方法合同的事,但我看不出它是個好東西:)

如果你想要的Pex做到這一點,正確的事要做的是使用PexAssume.IsTrue(value)