我愛我的Assert.AreEqual擴展到許多不同的類別,已知一個是當然的CollectionAssert,但我能想到的一些例如爲:ImageAssert,XmlAssert等。你是如何延長你的斷言類
您是否創建了自己的Assert類?你想創建什麼樣的新東西?
我愛我的Assert.AreEqual擴展到許多不同的類別,已知一個是當然的CollectionAssert,但我能想到的一些例如爲:ImageAssert,XmlAssert等。你是如何延長你的斷言類
您是否創建了自己的Assert類?你想創建什麼樣的新東西?
我只是增加了一個實施ImageAssert正如我上面寫的(在我的問題) 我會很高興聽到更多的那種樣品
我的很多測試都是圍繞加載一個已知好狀態的對象(比如一個CuttingPath)。執行測試,然後將結果與加載的對象進行比較。如果它們不同,那麼會發生一些「發生」,導致代碼發生變化。
該方法節省大量時間,並允許在需要時進行自定義比較。
我喜歡Assert類的感覺,但想要更多地作爲一個通用的驗證框架。我開始使用擴展方法羅傑Alsing的article,現在有一個就像一個系統:
Enforce.That(variable).IsNotNull();
Enforce.That(variable).IsInRange(10, 20);
Enforce.That(variable).IsTypeOf(typeof(System.String));
etc.
如果任何執行失敗,它拋出一個異常。我一直在考慮重構,這樣我就可以納入一個不引發異常的非關鍵評估。有些人喜歡Check.That作爲Enforce的一個變體。這將返回布爾值,但是具有相同簽名的擴展方法。
到目前爲止,我對這種方法的喜好是,我可以在我的單元測試中使用這些方法,以及在實際代碼中進行預驗證和後驗證問題,而無需引用Microsoft.VisualStudio.QualityTools。 UnitTestFramework程序集。我把它放在我的應用程序框架的根組件中,而Enforce就在根部,所以它很容易找到。
我認爲如果你重構你的測試以減少重複,那麼你最終會創建自己的框架作爲副產品,當然你的測試框架將會斷言在你的上下文中有意義的幫助者。
一個例子,我心目中是,當測試XHTML報告中,我們結束了,看上去像測試:
assertCoverageEquals(45.5);
其中背後斷言覆蓋是這樣的:
assertPercentage(COVERAGE_ID, 45.5);
,然後背後那是使用xpath獲取值的另一種方法,以及知道百分比的格式是什麼的方法。
的那是我的解決方案:
using MyStuff;
using A = Microsoft.VisualStudio.TestTools.UnitTesting.Assert;
namespace Mytestproj.Tests
{
public static class Assert
{
public static void AreEqual(object expected, object actual)
{
A.AreEqual(expected, actual);
}
// my extension
public static void AreEqual(MyEnum expected, int actual)
{
A.AreEqual((int)expected, actual);
}
public static void IsTrue(bool o)
{
A.IsTrue(o);
}
public static void IsFalse(bool o)
{
A.IsFalse(o);
}
public static void AreNotEqual(object notExpected, object actual)
{
A.AreNotEqual(notExpected, actual);
}
public static void IsNotNull(object o)
{
A.IsNotNull(o);
}
public static void IsNull(object o)
{
A.IsNull(o);
}
}
}