我有一个带有以下签名的测试方法:
public void TheBigTest(MyClass data, decimal result)
{
我想在XUnit 2.1中运行它。我已经设置了所有的CalculationData类,如果删除第二个参数,则可以正常工作。但是当我尝试将预期结果作为第二个参数传递时:
[Theory, ClassData(typeof(CalculationData)), InlineData(8893)]
它不起作用。测试失败了:
测试方法预期2个参数值,但1个参数值为 提供。
有什么想法吗?
答案 0 :(得分:1)
ClassData
属性中指定的类需要是一个可枚举的类,它返回测试方法的所有参数,而不仅仅是第一个参数。
因此,在您的示例中,您需要以下内容:
public class CalculationData : IEnumerable<object[]>
{
IEnumerable<object[]> parameters = new List<object[]>()
{
new object[] { new MyClass(), 8893.0m },
new object[] { new MyClass(), 1234.0m },
// ... other data...
};
public IEnumerator<object[]> GetEnumerator()
{
return parameters.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
然后,您可以向MyClass
课程添加参数,以增强您的测试数据。