Aus irgendeinem Grund dieser Test InlineData
Verwendung nicht in xUnit:xUnit.net: Warum haben diese 2 äquivalenten Tests unterschiedliche Ergebnisse?
[Theory]
[InlineData("\uD800", 1)]
public static void HasLength(string s, int length)
{
Assert.Equal(length, s.Length);
}
während diese, die MemberData
verwendet, übergibt:
public static IEnumerable<object[]> HasLength_TestData()
{
yield return new object[] { "\uD800", 1 };
}
[Theory]
[MemberData(nameof(HasLength_TestData))]
public static void HasLength(string s, int length)
{
Assert.Equal(length, s.Length);
}
Was ist der Grund dafür? Habe ich einen Fehler in xUnit.net entdeckt? (Ich glaube, es könnte etwas mit der Tatsache zu tun, dass \uD800
ist ein surrogate character, und es ist irgendwie zu 2 Zeichen übersetzt wird, wenn durch InlineData
vorbei. Nicht sicher, warum, aber.)
Ah, das macht jetzt viel mehr Sinn - also ist es kein Fehler in xUnit, aber das ist in das .NET Framework eingebaut. Danke für deine Antwort! –