【发布时间】:2018-02-07 10:00:27
【问题描述】:
我想测试一个以List<List<string>> 为参数的方法。我使用 xunit 作为测试框架。
这是我尝试过的。
public static IEnumerable<IEnumerable<string>> CombinationData
{
get
{
return new List<List<string>>
{
new List<string>{ "a", "b", "c" },
new List<string>{ "x", "y", "z" }
};
}
}
[Theory]
[MemberData(nameof(CombinationData))]
public void CombinationDataTest(List<List<string>> dataStrings)
{
...
}
运行测试时出现以下异常。
System.ArgumentException :
CodeUnitTests.MainCodeTests 上的Property CombinationData 产生了一个不是对象的项目[]
堆栈跟踪:在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
我如何使它工作?这是正确的方法吗?
【问题讨论】:
-
@RufusL 它是 Visual Studio 中的 xunit 测试运行程序,它给了我例外。 (测试输出窗口)
-
@RufusL 抛出异常的不是我的代码,而是测试框架。执行甚至没有在测试方法中遇到断点。
-
@RufusL 我猜有人可以在测试类中使用上面的代码重现它,并在起始大括号上放置一个断点。我不确定它是否对其他人有用。我可以看到测试框架正在尝试通过迭代 CombinationData 属性来调用测试方法。它可能期望一个 object[] 而不是 List.
标签: c# .net tdd xunit xunit.net