Given an object with several properties, say System.Drawing.Rectangle, I wanted to assert the values of ALL the properties (not stopping when ONE property didn't match) and report ALL the properties.
I tried this code, hoping it would do what I wanted...
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);
Whats the correct way in NUnit to do this?
(I realize this works:)
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);
I'm assuming you don't want to make the type itself check for equality and override ToString
? Because that would do it nice.
One option would be to use anonymous types to accomplish the same goal:
Assert.AreEqual(new { X = testX, Y = testY },
new { croppingRectangle.X, croppingRectangle.Y });
Due to the way anonymous types work (with Equals
and ToString
being autogenerated) this should give you a nice error message and check all the properties at the same time. It does rely on the per-property equality check being the default check for each property type though.
See more on this question at Stackoverflow