我遇到了一个场景,我不太确定如何处理。
我们正在努力将单元测试代码覆盖率提高到100%。
我一直试图采用TDD的开发方法,编写测试,使其通过,编写失败的测试,添加更多代码以使其通过等。
在这样做的过程中,我发现我写了一个像这样的类:
随着编码的进行,工厂扩展到了这个规模:
现在工厂已经实现了枚举,我是否应该删除默认异常以便进行代码覆盖率测试,还是保留异常作为默认值,以防有人添加新类型到枚举中时忘记修改工厂?
我们正在努力将单元测试代码覆盖率提高到100%。
我一直试图采用TDD的开发方法,编写测试,使其通过,编写失败的测试,添加更多代码以使其通过等。
在这样做的过程中,我发现我写了一个像这样的类:
public enum IntervalType : int
{
Shift = 1,
PaidBreak = 2,
UnpaidBreak = 3
}
public static class QuarterFactory
{
public static IQuarter CreateQuarter(IntervalType intervalType)
{
switch (intervalType)
{
case IntervalType.Shift:
return new ShiftQuarter();
default:
throw new ArgumentException(String.Format("Unable to create a Quarter based on an IntervalType of: {0}", intervalType));
}
}
}
随着编码的进行,工厂扩展到了这个规模:
public static class QuarterFactory
{
public static IQuarter CreateQuarter(IntervalType intervalType)
{
switch (intervalType)
{
case IntervalType.Shift:
return new ShiftQuarter();
case IntervalType.PaidBreak:
return new PaidBreakQuarter();
case IntervalType.UnpaidBreak:
return new UnpaidBreakQuarter();
default:
throw new ArgumentException(String.Format("Unable to create a Quarter based on an IntervalType of: {0}", intervalType));
}
}
}
我要问的第一个问题是:现在工厂已经实现了枚举,我是否应该删除默认异常以便进行代码覆盖率测试,还是保留异常作为默认值,以防有人添加新类型到枚举中时忘记修改工厂?
我要问的第二个问题是:
如果我决定删除异常并将类型默认为UnpaidBreakQuarter,那么将IQuarter默认设置为UnpaidBreakQuarter是否合理,或者这会引发“为什么默认是UnpaidBreakQuarter,这里是否存在业务规则?”的问题。
此致敬礼,
James