這可能是我需要擺脫我的系統的哲學咆哮,另一方面我可能做錯了什麼,如果是的話請告訴我!TestMethod生成錯誤CS0201
我有一個單元測試看起來是這樣的:
[TestMethod]
[ExpectedException(typeof(NotImplementedException))]
public void Test_XXXAccess()
{
ControlPoint.MyObject.XXXAccess;
}
,檢查,當測試是在一個特定的上下文中運行的性能XXXAccess未實現。此測試會生成編譯錯誤CS0201:「只有賦值,調用,增量,減量和新對象表達式可用作語句」雖然我同意這是生產代碼中的錯誤,但我認爲錯誤適用於單元測試。當然,我可以重新編寫代碼:
[TestMethod]
[ExpectedException(typeof(NotImplementedException))]
public void Test_XXXAccess()
{
MyType x = ControlPoint.MyObject.XXXAccess;
}
但是,這(對我來說)似乎更不正確的,你現在已經分配成一個變量做無非靜音錯誤更多。
有沒有更好的方法來編寫測試?
除非您在''get''方法中使用'XXXAccess'屬性的副作用,除非您小心,否則這本身可能是不好的做法,我會說第二個版本是唯一正確的版本。要求編譯器記住你想要的東西很難。 :) – HonkyTonk 2012-08-15 14:30:03
嗯...嗯,我使用了很多'Mock'對象來實現我的公共接口 - 這些是拋出異常的東西。我的測試檢查這些調用得到了那麼多,因爲如果沒有權限訪問這些方法,我有代理會拋出不同的異常....所以我猜這可能是不好的做法 - 但它似乎是最好的方法的東西。 – diversemix 2012-08-15 14:43:26