2010-06-18 53 views
1

我想在我的MSTest單元測試框架中提供一些自定義Assert方法。我有我自己的靜態類「CustomAssert」,以及類似下面的方法:使用MSTest自定義斷言 - 處理AssertFailedException

public static void DatesAreEqualToDay(DateTime expectedValue, DateTime actualValue) 
{ 
    if (!(
     expectedValue.Year == actualValue.Year && 
     expectedValue.Month == actualValue.Month && 
     expectedValue.Day == actualValue.Day)) 
    { 
     Assert.Fail(string.Format("Expected: <{0:yyyy-MM-dd}> - Actual <{1:yyyy-MM-dd}>", expectedValue, actualValue)); 
    } 
} 

當日期不一致時,測試失敗。但是取而代之的是自定義錯誤消息,我只是收到測試拋出AssertFailedException的消息。你如何將自定義斷言像MSTest的Assert方法一樣處理,並顯示智能錯誤消息?

回答

0

此問題是由於我的「TestFramework」項目引用了Microsoft.VisualStudio.QualityTools.UnitTesting程序集的VS2008版本引起的。我更改了對VS2010版本的程序集的引用,並且自定義斷言開始按照預期運行,MSTest顯示自定義斷言消息,而不是「AssertFailedException」。

1

除了創建您自己的自定義斷言之外,您還可以嘗試使用當前可用的其中一個框架。例如:Fluent Assertions

+0

看起來像一個非常好的框架。 – Redeemed1 2015-10-23 09:54:17