何らかの理由で、このテストを利用するInlineData
と xUnit で失敗します。
[Theory]
[InlineData("\uD800", 1)]
public static void HasLength(string s, int length)
{
Assert.Equal(length, s.Length);
}
を使用するこれはMemberData
、次を渡します。
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