3

在编写一组单元测试(针对现有的遗留组件)时,我想要一种方法来关联错误代码列表(将由我模拟的服务返回)和相应错误消息列表(我的被测组件将返回)。

似乎使用 aList<Tuple<string, string>>是定义这种关联的一种很好的简单方法。

var errorCodesAndMessages = new List<Tuple<string, string>>
{
    Tuple.Create("CODE1", "Error message 1"),
    Tuple.Create("CODE2", "Error message 2")
    // etc...
};

然后,在我的单元测试中,我可以遍历errorCodesAndMessages,设置我的模拟服务以返回第n 个错误代码,并断言被测组件返回第n 个错误消息。

这是很好地使用 - 还是滥用 - Tuple<>

编辑

回应表明,Dictionary<string, string>在这种情况下会更好。我不得不同意。但是,如果(出于某种原因)我们需要关联三段数据(例如错误代码、用户显示的错误消息和技术错误消息)怎么办?

那么这会是一个很好的用途Tuple<>吗?

Tuple.Create("CODE1", "User error message", "Technical error message")
4

2 回答 2

4

元组仍然可以工作,但是如果您想跟踪有关错误代码的详细信息,我认为如果您创建一个简单的类来编写错误代码的详细信息并仍然使用字典来保存代码,那么代码将更具可读性和可维护性跟踪错误代码键。

Dictionary<string, ErrorCodeDetails>
于 2012-04-23T13:24:03.320 回答
4

这似乎Dictionary<string, string>是一种更好的处理方法,因为假设您不会有重复的错误代码是相当安全的。Dictionary还具有对键进行恒定时间查找的优点。

var errorCodesAndMessages = new Dictionary<string, string>()
{
    { "CODE1", "Error message 1" },
    { "CODE2", "Error message 2" },
    // etc...
};

代码也更短。

于 2012-04-23T13:25:28.480 回答