Dot-Net
如何使用“正確”呼叫堆棧創建自定義 MSTest 斷言方法
我正在為我的單元測試編寫擴展方法來測試值。一個天真的例子是:
public static void ShouldBeTrue(this bool value) { if(!value) { throw new AssertFailedException("Expected true"); } }並在測試中使用它:
someBool.ShouldBeTrue();一切正常,除了拋出異常的行將是我在“測試結果”視窗中點兩下失敗的測試時最終出現的行,並且在“測試結果詳細資訊”中,拋出行顯示在錯誤堆棧跟踪中。
有沒有辦法解決這個問題,所以“someBool.ShouldBeTrue();”:
- 在“測試結果”視窗中點兩下失敗測試的行是打開的嗎?
- 是堆棧跟踪中的唯一行嗎?
我想我找到了答案。您需要做的就是將您的自定義斷言類/方法放入一個單獨的程序集中。如果您願意,您可以在同一解決方案中將此作為單獨的項目。
已經為此編寫了一個類庫:http: //geekswithblogs.net/sdorman/archive/2009/01/31/adding-custom-assertions-to-mstest.aspx
上面連結中有一段話:
…作為參考,那些不可用的斷言是:
- 斷言.IsNaN
- 斷言.IsEmpty
- 斷言.IsNotEmpty
- 斷言.更大
- 斷言.GreaterOrEqual
- 少斷言
- 斷言.LessOrEqual
- 斷言.IsAssignableFrom
- 斷言.IsNotAssignableFrom
- CollectionAssert.IsEmpty
- CollectionAssert.IsNotEmpty
- StringAssert.AreEqualIgnoringCase
- StringAssert.IsMatch
- FileAssert.AreEqual
- FileAssert.AreNotEqual
…我創建了一個類庫,其中包括除 FileAssert 方法和 StringAssert.IsMatch 之外的所有這些。…您可以從我的 SkyDrive 公共文件夾下載課程:https ://skydrive.live.com/?cid=93d618d639ec9651&id=93D618D639EC9651%211283