Here is a nice trick to apply when using CollectionAssert.AreEquivalent of MSTest. While the signature of the method is: (ICollection expected, ICollection actual) When using them in your code switch between the actual and expected. Pass your execution result as the first argument, and you expected collection as the second. Doing this will give a better more informative error message in during failures. Lets see an example, I have a test which ends with this: var actual = CrapAnalyzer.CreateCrapReport("", "");var expected = new Dictionary<string, double>();expected["MyClass.Method1"] = 1.34;expected["MyClass.Method2"] = 1.22;expected["MyClass.Method3"] = 5;CollectionAssert.AreEquivalent ( expected as ICollection, actual as ICollection );When run as is I get the following:CollectionAssert.AreEquivalent...