由于某种原因,此测试InlineData
在 xUnit 中使用失败:
[Theory]
[InlineData("\uD800", 1)]
public static void HasLength(string s, int length)
{
Assert.Equal(length, s.Length);
}
而使用MemberData
的 this 通过:
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);
}
这是什么原因?我在 xUnit.net 中发现了一个错误吗?(我认为这可能与它\uD800
是一个代理字符这一事实有关,并且在通过时它以某种方式被翻译成 2 个字符InlineData
。但不知道为什么。)