2016-03-01 30 views
0

我有一個排序的枚舉,代表我遍歷它們的順序的一個雜貨店的部分。Enum的單元測試順序

enum Departments { Produce=0, Bulk=1, Deli=2, Frozen=3, NonFood=4, Bakery=5, DryGoods=6 } 

現在我有一個代表項目,以獲取有一個名字和一個部門的一些類:

class GroceryItem : IComparable<GroceryItem> 
{ 
    string Name; 
    Departments Department; 
} 

正確的排序功能,按部門按字母順序排序的購物清單,這樣我就可以減少我的穿越商店。

單元測試這個枚舉的命令是否有價值,還是應該使用其他數據結構來保存部門?

+0

enum的順序是否顯着?它似乎與您以後要做的字母排序有關。 – Rob

+0

是的,也許我誤解了排序順序,我想根據他們的部門按字母順序排列項目,所以[麪包(麪包店),狗食(散裝),胡蘿蔔(生產),橙子(生產)]分類爲[胡蘿蔔,桔子,狗糧,麪包] – Somkun

回答

0

如果排序是業務需求,我會爲生成(並可能顯示)排序結果的方法編寫一個測試。將其傳遞給GroceryItem的無序集合,並驗證訂單是否正確。

對測試只有上的枚舉可能是錯誤的方式去(雖然你可以做兩個測試)。我說的原因是,你不能保證你的代碼實際上按部門排序。

這些都要去未被發現:

groceryItems.OrderBy(g => g.Name).ThenBy(g => g.Department); 

groceryItems.OrderByDescending(g => g.Department).ThenBy(g => g.Department); 

groceryItems.OrderBy(g => g.Name); 

groceryItems.OrderBy(g => g.Department); 

即使枚舉正確排序。

+0

因爲我使用IComparable,那麼我需要測試一個包含每個部門1個對象的集合,對它進行排序,然後確保它們的順序是正確的? – Somkun

+0

非常 - 是的。儘管每個部門都有兩個/三個項目,但要檢查'ThenBy'排序是否也適用 – Rob