1
私はスペースに基づいて文を分割するユーティリティメソッドの機能をテストするためのxunitテストを書いています。例:入力: "Who go there?"、出力:{"Who"、 "goes"、 "there"}文字列のコレクション/リスト。Listオブジェクトを持つXUnit MemberData
私がしようとした以下の
[Theory]
[MemberData(nameof(GetSplitWordHelperTestCases))]
public void TestSplitWord(TestSplitWordHelper splitWordHelper)
{
var actualResult = (List<string>)splitWordHelper.Build().Item1.SplitWord();
var expectedResult = (List<string>)splitWordHelper.Build().Item2;
Assert.Equal(expectedResult.Count, actualResult.Count);
for(int i = 0; i < actualResult.Count; i++)
{
Assert.Equal(expectedResult[i], actualResult[i]);
}
}
public static IEnumerable<object[]> GetSplitWordHelperTestCases()
{
yield return new object[] { new TestSplitWordHelper("Hi There",
new List<string> { "Hi", "There" }) };
}
public class TestSplitWordHelper : IXunitSerializable
{
private IEnumerable<string> results;
private string source;
public TestSplitWordHelper()
{
}
public TestSplitWordHelper(string source, IEnumerable<string> results)
{
this.source = source;
this.results = results;
}
public Tuple<string, IEnumerable<string>> Build()
{
return new Tuple<string, IEnumerable<string>>(source, this.results);
}
public void Deserialize(IXunitSerializationInfo info)
{
source = info.GetValue<string>("source");
results = info.GetValue<IEnumerable<string>>("results");
}
public void Serialize(IXunitSerializationInfo info)
{
info.AddValue("source", source, typeof(string));
info.AddValue("results", results, typeof(IEnumerable<string>));
}
public override string ToString()
{
return string.Join(" ", results.Select(x => x.ToString()).ToArray());
}
}
私は取得しています。このコンパイル
「System.ArgumentExceptionの:私たちはタイプSystem.Collections.Generic.Listをシリアル化する方法がわからない」と、私はこの問題を理解します。 XunitはListをシリアライズできません。私の使用例を考えて、どのようにテストケースを書くのですか?
ありがとうございます!