我如何在 Theory inlinData 中使用 hashSet
how i can use hashSet in Theory inlinData
我有一个测试 class,我想为我的一个函数编写一个测试,我必须在 [Theory] inlineData 中使用 HashSet 但我不能使用它。
[Theory]
[InlineData(new HashSet<string>() {"text1","text2"}, "str")]
public void BuildInvertedIndexTest(ISet<string> expectedDocContain, string searchingWord)
我写了 classData 和 memberData 但没有成功。
请指导我。
您不能将 HashSet<T>
与 [InlineData]
一起使用,因为属性仅支持简单类型,例如 string
、int
、bool
、数组等
您将需要使用另一种方法来参数化测试,例如 [MemberData]
用于 ISet<T>
/HashSet<T>
,您可以在此博客中阅读更多信息 post安德鲁·洛克:https://andrewlock.net/creating-parameterised-tests-in-xunit-with-inlinedata-classdata-and-memberdata/
或者,您可以将 string[]
与 [InlineData]
一起使用,并从测试正文中构建 HashSet<string>
。
[Theory]
[InlineData(new string[] {"text1","text2"}, "six")]
public void BuildInvertedIndexTest(string[] expectedDocContain, string searchingWord)
{
var hashSet = new HashSet<string>(expectedDocContain);
// TODO Put the rest of your test here.
}
使用 MemberDataAttribute
解决方案可能如下所示:
public static IEnumerable<object[]> BuildInvertedIndexTestData()
{
yield return new object[] { new HashSet<string>() { "text1", "text2" }, "str" };
yield return new object[] { ... };
}
用法如下所示:
[Theory, MemberData(nameof(BuildInvertedIndexTestData))]
public void BuildInvertedIndexTest(ISet<string> expectedDocContain, string searchingWord)
我还没有测试过这个解决方案,所以您可能需要将 expectedDocContain
参数的类型更改为 HashSet<string>
。
我有一个测试 class,我想为我的一个函数编写一个测试,我必须在 [Theory] inlineData 中使用 HashSet 但我不能使用它。
[Theory]
[InlineData(new HashSet<string>() {"text1","text2"}, "str")]
public void BuildInvertedIndexTest(ISet<string> expectedDocContain, string searchingWord)
我写了 classData 和 memberData 但没有成功。 请指导我。
您不能将 HashSet<T>
与 [InlineData]
一起使用,因为属性仅支持简单类型,例如 string
、int
、bool
、数组等
您将需要使用另一种方法来参数化测试,例如 [MemberData]
用于 ISet<T>
/HashSet<T>
,您可以在此博客中阅读更多信息 post安德鲁·洛克:https://andrewlock.net/creating-parameterised-tests-in-xunit-with-inlinedata-classdata-and-memberdata/
或者,您可以将 string[]
与 [InlineData]
一起使用,并从测试正文中构建 HashSet<string>
。
[Theory]
[InlineData(new string[] {"text1","text2"}, "six")]
public void BuildInvertedIndexTest(string[] expectedDocContain, string searchingWord)
{
var hashSet = new HashSet<string>(expectedDocContain);
// TODO Put the rest of your test here.
}
使用 MemberDataAttribute
解决方案可能如下所示:
public static IEnumerable<object[]> BuildInvertedIndexTestData()
{
yield return new object[] { new HashSet<string>() { "text1", "text2" }, "str" };
yield return new object[] { ... };
}
用法如下所示:
[Theory, MemberData(nameof(BuildInvertedIndexTestData))]
public void BuildInvertedIndexTest(ISet<string> expectedDocContain, string searchingWord)
我还没有测试过这个解决方案,所以您可能需要将 expectedDocContain
参数的类型更改为 HashSet<string>
。