code-contracts

    0熱度

    1回答

    我有下面這段C#代碼: myClaimsIdentity.FindFirst(ClaimTypes.NameIdentifier).Value; CodeContract知道myClaimsIdentity永遠不能爲null。但它抱怨FindFirst(string)方法可能會返回空值: 警告CodeContracts:可能調用空引用上的方法。你期望System.Security.Claims

    2熱度

    2回答

    我的團隊中的一位同事說某些方法應該同時具備前提條件&後置條件。但關鍵在於代碼覆蓋率,這些條件直到實現了一個無效實現(在單元測試中才使用)才被調用(未測試)。讓我們以下面的例子。我們 public interface ICalculator { int Calculate(int x, int y); } public int GetSummary(int x, int y)

    4熱度

    1回答

    我有下面的代碼片段: public static string returnString() { string[] stringList = { "a" }; if (stringList.Count() != 1) { throw new Exception("Multiple values in list"); }

    1熱度

    1回答

    我的類有兩個私有字段和三個構造函數。 一個構造函數是不分配任何值的默認構造函數。 其餘構造每個實例化兩個領域之一,以確保一個領域是總是null和其他領域是從未null。 public class MyClass { private readonly Foo foo; public Foo InstanceOfFoo { get { return this.foo; } }

    0熱度

    2回答

    您認爲在單元測試中使用代碼合同是可取的嗎? 我不認爲這是因爲它就像創建單元測試來測試你的單元測試一樣。 因此,我不會激活代碼合同靜態檢查,也不會激活單元測試項目的運行時檢查。 爲了澄清,我特別想知道您是否會在單元測試中編寫代碼合同代碼。

    4熱度

    3回答

    目前,代碼協定不允許在派生類在成員已經有一個前提條件在基類成員集合先決條件(其實我目前得到一個警告,而不是錯誤)。我不明白這背後的邏輯。我知道這與Liskov的替代規則有關,該規則聲明一個派生類應該始終能夠在父類預期的地方使用。當然「使用」意味着按預期工作。這對我來說對於接口來說似乎沒有問題,因爲實現接口的不同類型不會添加狀態,因此可以嚴格地約定合同。但是,當您從基類繼承時,您正在這樣做以添加狀態

    1熱度

    1回答

    的PureAttribute documentation說: 表示一個類型或方法是純粹的,也就是說,它不會使任何可見的狀態改變 難道這就是的唯一要求微軟代碼合同中的純函數? 而且;這個模型是否假定異常是結果(而不是副作用)? 我問,因爲,在更一般的上下文中,a pure function也意味着輸出僅取決於輸入;即。它不能是I/O或隨機函數的結果。 有人可能會爭辯說,一個純函數總是產生一個外部表達

    -1熱度

    1回答

    確實,在C#方法中使用Contracts.Requires和Contracts.Ensure會減少該方法的必要單元測試嗎?我可以忽略不符合合同的價值範圍,或者這些價值也應該包含在單元測試中?

    19熱度

    3回答

    我期待以最優雅的方式驗證我的代碼中的方法參數。代碼合同在2015年似乎不起作用。有人使用任何替代方法嗎?

    1熱度

    1回答

    我是新來的合同,我從概述中瞭解到它可以幫助您在編譯時發現合同違規。 當我有明確違反合同的代碼時,我沒有收到編譯時警告或錯誤。 我希望在測試中設置Person.Name = null的代碼行會給我一個警告或錯誤,因爲它違反了合同。 如何調整我的代碼以獲取編譯時間消息? 說明:爲了澄清,我把它放在單元測試中的唯一原因是得到編譯時間消息。測試本身目前通過,這是一個運行時間方面;我想它應該通過,因爲它是編