2015-11-02 12 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

相關問題