John and I were trying to figure out why a test wasn't failing on his machine. We finally realized different versions of NUnit were producing different results.
In nUnit 2.2, Assert.AreEqual(string, string) ultimately calls String.Equals to perform the string comparison.
In nUnit 2.4, Assert.AreEqual(string, string) ultimately calls String.Compare to perform the string comparison.
As the following code will demonstrate, these methods can behave differently.
String.Equals performs an ordinal comparison that operates on the individual
numeric Char values inside each string. String.Compare performs a linguistic comparison that operates on the value of the string as a whole, and takes into account culture-specific casing, sorting, formatting, and parsing rules. See "New Recommendations for Using Strings in Microsoft .NET 2.0" by Dave Fetterman for a detailed discussion.