枚举的单元测试顺序
Unit Testing Order of Enum
我有一个已排序的枚举,按照我遍历它们的顺序表示杂货店的各个部分。
enum Departments { Produce=0, Bulk=1, Deli=2, Frozen=3, NonFood=4, Bakery=5, DryGoods=6 }
现在我有一些 class 表示要获取的具有名称和部门的项目:
class GroceryItem : IComparable<GroceryItem>
{
string Name;
Departments Department;
}
正确的排序功能按部门的字母顺序对杂货清单进行排序,因此我可以最大限度地减少对商店的遍历。
对订单枚举进行单元测试是否有价值,或者我应该使用其他一些数据结构来保存部门?
如果排序是一项业务需求,我会为生成(并可能显示)排序结果的方法编写一个测试。将 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);
即使枚举已正确排序。
我有一个已排序的枚举,按照我遍历它们的顺序表示杂货店的各个部分。
enum Departments { Produce=0, Bulk=1, Deli=2, Frozen=3, NonFood=4, Bakery=5, DryGoods=6 }
现在我有一些 class 表示要获取的具有名称和部门的项目:
class GroceryItem : IComparable<GroceryItem>
{
string Name;
Departments Department;
}
正确的排序功能按部门的字母顺序对杂货清单进行排序,因此我可以最大限度地减少对商店的遍历。
对订单枚举进行单元测试是否有价值,或者我应该使用其他一些数据结构来保存部门?
如果排序是一项业务需求,我会为生成(并可能显示)排序结果的方法编写一个测试。将 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);
即使枚举已正确排序。