Visual Studio Unit-Tests Behaupten.AreEqual Schlägt mit Identischen Erwarteten und Tatsächlichen Werten
Ich bin ein absoluter newb, wenn es um Unit-Testing, also bitte verzeihen Sie mir wenn das ist die totale Ignoranz. Aber ich kann nicht diese Methode zum übergeben eines unit-test, auch wenn ich den genauen gleichen Werte für die erwarteten und die tatsächlichen. Wenn ich breakpoints setzen und Schritt für Schritt durch, ich haben bestätigt, dass sowohl die erwarteten und die tatsächlichen Variablen ein string-array mit zwei Elementen, blah und blah. Aber der test weiterhin fehlschlägt, jedes mal, die besagt, dass "Geltend zu machen.AreEqual failed. Erwartet: System.String[] Aktuell:System.String[]"
namespace TestProject1
{
public class Testing
{
public string[] PMDate(string lastPm)
{
if (string.IsNullOrEmpty(lastPm))
return new []{"blah", "blah"};
string[] results = lastPm.Split(new[] {" "}, StringSplitOptions.None);
if (results.Length < 2)
return new[] {"blah", "blah"};
return results;
}
}
[TestClass()]
public class UnitTest1
{
[TestMethod()]
public void PmDateTest()
{
Testing test = new Testing();
string[] expected = test.PMDate("01/01/1900");
string[] actual = test.PMDate("01/01/1900");
Assert.AreEqual(expected, actual);
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Prüfung mit
object.Equals
, die nicht außer Kraft gesetzt, die für arrays. In anderen Worten, das gedruckt wird, false:Sollten Sie verwenden
CollectionAssert
statt für die Sammlungen:Diese wird scheitern, weil die string-arrays, das sind zwei unterschiedliche Objekte, auch wenn Sie enthalten die gleichen Werte, Sie sind verschiedene Objekte. Sie können einfach überprüfen Sie dies durch Aktivierung erwartet.GetHashcode() und der tatsächlichen.GetHashCode() zur Laufzeit, und Sie werden sehen, dass die hash-codes unterscheiden