2012-11-21 35 views
2

我需要編寫一個單元測試的方法,我根據另一個默認列表安排數據。寫入單元測試排序

這是方法。

internal AData[] GetDataArrayInInitialSortOrder(ABData aBData) 
{ 
    Dictionary<string,AData > aMap = aBData.ADataArray.ToDictionary(v => v.GroupName, v => v); 
    List<AData> newDataList = new List<AData>(); 
    foreach (AData aData in _viewModel.ADList) 
     newDataList.Add(aMap[aData.GroupName]); 
    return newDataList.ToArray(); 
} 

請幫助我是新的單元測試,這對我來說並不容易。

+2

該單元測試framewo你想用rk嗎?你想要測試什麼要求?這與linq有什麼關係? –

+0

_viewModel.ADList是排序的,可以被認爲是默認的。我想測試,如果我在這種情況下給另一個數組aBData.ADataArray不同的值,它應該按照默認順序排序它。 Linq只是因爲我使用了字典映射。 – user175084

回答

1

下面是一個例子使用Visual Studio Testing Framework

[TestClass] 
public class MyTestClass 
{ 
    [TestMethod] 
    public void MyTest() 
    { 
     var input = new[] { 2, 3, 4, 1 }; 
     var expected = new[] { 1, 2, 3, 4 }; 

     int[] actual = Sort(input); 

     Assert.IsNotNull(actual); 
     Assert.AreEqual(expected.Length, actual.Length); 
     Assert.IsTrue(expected.SequenceEqual(actual)); 
    } 
} 
+0

這真的是一個不好的做法:1)在測試的不同位置有多個斷言是不好的 - 記住AAA規則; 2)不要使用循環來斷言。 –

+0

也不是很好的測試框架。 –

+0

你可以使用'Enumerable.SequenceEqual()',但它不會給你更多關於哪個索引失敗的細節。 – maximpa