給定一個具有多個屬性的對象,例如System.Drawing.Rectangle,我想聲明所有屬性的值(當ONE屬性不匹配時不會停止)並報告所有屬性。如何在nunit中原子性地測試屬性
我嘗試這個代碼,希望它會做什麼,我想......
System.Drawing.Rectangle croppingRectangle = SomeMethodReturnsRectangle(testP1,testP2);
Assert.That(()=>{ croppingRectangle.X==testX && croppingRectangle.Y==testY },"expected X={0}, Y={1} but was X={2},Y={3}", testX,testY,croppingRectangle.X,croppingRectangle.Y);
什麼在NUnit的正確的方式做到這一點?
(我知道這工作:)
if(croppingRectangle.X==testX && croppingRectangle.Y==testY) {
Assert.Pass();
else
Assert.Fail("expected X={0}, Y={1} but was X={2},Y={3}", testX,testY,croppingRectangle.X,croppingRectangle.Y);
由於我(技術上)無法更改核心庫,因此我必須檢查自己。有趣的新的匿名類型的方法,我會嘗試並報告回來。 – enorl76
回報:所以這個效果很好......匿名類型像你說的那樣生成Equals ...但是看起來有點麻煩。 – enorl76
@ enorl76:對我來說,看起來不像你希望工作的代碼那麼麻煩。如果您需要爲某種特定類型定期執行此操作,則可以在該類型上創建一個「ToAnonymousType」擴展方法。 –