2015-11-02 48 views
0

我有一个测试方法具有以下签名:XUnit可以在同一个方法中处理类和小数参数的测试吗?

public void TheBigTest(MyClass data, decimal result) 
{ 

而且我想在的xUnit 2.1运行此。我已经设置了所有的CalculationData类,并且如果删除第二个参数,那么该类就可以工作。但是当我尝试通过期望的结果作为第二个参数时:

[Theory, ClassData(typeof(CalculationData)), InlineData(8893)] 

它不起作用。该测试失败的答案为:

测试方法预计有2个参数值,但1个参数值是 提供的。

任何想法?

回答

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类,以提高您的测试数据。

+0

感谢您的答案@保罗。几个小时前我自己完成了所有工作,但没有得到更新。 – Adam

相关问题