XUnit 能否在同一方法中处理测试处理 class 和 decimal 参数?
Can XUnit handle tests handle class and decimal parameters in the same method?
我有一个具有以下签名的测试方法:
public void TheBigTest(MyClass data, decimal result)
{
而且我想 运行 在 XUnit 2.1 中这样做。我已经设置好我的 CalculationData class,如果我删除第二个参数,它就可以工作。但是当我尝试通过执行以下操作将预期结果作为第二个参数传递时:
[Theory, ClassData(typeof(CalculationData)), InlineData(8893)]
没用。测试失败并显示:
The test method expected 2 parameter values, but 1 parameter value was
provided.
有什么想法吗?
ClassData
属性中指定的class需要是一个可枚举的class,即returns测试方法的所有参数,而不仅仅是第一个.
因此,在您的示例中,您需要如下内容:
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
class 以增强您的测试数据。
我有一个具有以下签名的测试方法:
public void TheBigTest(MyClass data, decimal result)
{
而且我想 运行 在 XUnit 2.1 中这样做。我已经设置好我的 CalculationData class,如果我删除第二个参数,它就可以工作。但是当我尝试通过执行以下操作将预期结果作为第二个参数传递时:
[Theory, ClassData(typeof(CalculationData)), InlineData(8893)]
没用。测试失败并显示:
The test method expected 2 parameter values, but 1 parameter value was provided.
有什么想法吗?
ClassData
属性中指定的class需要是一个可枚举的class,即returns测试方法的所有参数,而不仅仅是第一个.
因此,在您的示例中,您需要如下内容:
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
class 以增强您的测试数据。