2012-11-16 59 views
2

我有一個數據源,如-4,-3,-3,-2,-1,0,1,2,2,3,4,我有一個函數和這個函數可以捕獲重複的數字,例如在這個數據源中我們有-3,2個重複。重複的數字在程序結束時報告。 我找不到好例子(我花了3個小時)。 如何使用NUnit實現單元測試,可以測試相同的情況,並告訴我結果,如果你有一些例子,它對我非常有用(真的很感激)。用數據源NUnit數據驅動的單元測試

回答

4

您可以使用TestCase屬性來獲取您所描述的簡單數據。

[Test] 
[TestCase(new[] { -4, -3, -3, -2, -1, 0, 1, 2, 2, 3, 4 }, new []{-3,2})] 
public void YourTest(int[] given, int[] expected)  
{ ... } 

注:ReSharper的(至少我的版本的話)不接受多個測試案例像這樣的,所以我不得不確認多個測試用例與NUnit的GUI。

+2

+1我認爲測試是可選的,如果你有標記的TestCase – Gishu

+0

感謝方法,就可以顯示數組的第一個索引任何重複at.for例如-3 - > 1,2 - > 7 –

+0

@ user1824702:這個問題的範圍是什麼? –

1

在這種情況下,我會推薦TestCaseSource。一些測試可能會使數據在TestCase屬性內難以閱讀。

1

首先要做的事 - 獲得工作測試。事情是這樣的:

[Test] 
    public void DetectsMinusThreeAndTwo() 
    { 
     RepeatingDigitsDetector target = new RepeatingDigitsDetector(); 
     int[] source = new int[] { -4, -3, -3, -2, -1, 0, 1, 2, 2, 3, 4 }; 
     int[] expected = new int[] { -3, -2 }; 
     int[] actual = target.GetRepeats(source); 
     Assert.AreEqual(expected.Length, actual.Length, "checking lengths"); 
     for (int i = 0; i < expected.Length; i++) 
     { 
      Assert.AreEqual(expected[i], actual[i], "checking element {0}", i); 
     } 
    } 

之後,你就可以開始添加在像TestCaseTestCaseSource屬性的好東西。但是,如果您嘗試執行TDD(因爲標記暗示),則需要從a測試開始。

+0

謝謝@Edmund,我想我們有像Excel,Access等外部數據源,例如MSTest –