【发布时间】:2012-06-05 13:40:05
【问题描述】:
对这类方法进行单元测试的最佳实践是什么?
public VerificationResultCode Translate(int value)
{
VerificationResultCode result;
if (Enum.IsDefined(typeof(VerificationResultCode), (int)value))
result = (VerificationResultCode)((int)value);
else
throw new UnknownResultReturnFromGatewayException();
return result;
}
VerificationResultCode 是 Enum 类型,如:
public enum VerificationResultCode
{
BankingNetworkError = 100,
NotEqual =101,
InputFormatError = 102,
MerchantAuthenticationFailed = 103,
...
}
我们应该为每个 Enum 成员编写一个测试方法还是只编写 一个 包含大量断言的测试方法?
【问题讨论】:
-
一方面,您不应该将整数编码为双精度数。你会有虚假的失败。
-
两个测试。一个值正确,一个值不正确。注意你没有得到异常,然后你确实得到了异常。您正在对 CLR 从整数转换为枚举的能力进行单元测试的任何其他内容。
-
你在测试什么?枚举还是翻译方法?如果是后者,那么一个有效值和一个无效值(有预期的例外)应该这样做。如果是前者,那么您将需要一些带有定义的外部资源。
标签: c# unit-testing tdd