【发布时间】:2015-12-16 13:15:09
【问题描述】:
下面是我必须为其编写单元测试的类之一中的示例 switch 语句。我已经从下面的代码中删除了每种情况下的逻辑。
switch (insurance.getInsuranceType()) {
case None:{
break;}
case Health: {
break;}
case Auto:{
break;}
case WorkersCompensation:{
break;}
default:{}
}
我必须覆盖每个开关路径,但要到达要测试的函数中的这个开关点,我必须放置 10 条 whens 和相应的验证语句(我正在使用 Mockito 进行模拟)。为了覆盖每条路径,我可以选择编写与 switch 语句中的情况一样多的函数(针对各种 InsuranceType 数据),或者我编写单个函数并通过更改 InsuranceTypedata 来重复相同的代码。测试代码以两种方式重复,第二种方式更容易出错,用于验证对模拟对象的调用。我的问题是关于任何其他方式(有助于避免重复代码和干净的测试代码)以及经验丰富的开发人员如何在他们的单元测试中处理 switch 语句(因为我的代码中有 10 个案例的情况)?代码是由其他一些开发人员编写的,我被要求编写单元测试以增加测试覆盖率并进行额外的单元测试。我需要知道是否有关于多个逻辑分支的通用实践(不一定只针对 switch 语句,但有时也有多个 if - else if - else 逻辑和 3 -4 级深度嵌套条件)。 insurance.getInsuranceType() 是一个枚举。
请建议。
【问题讨论】:
标签: java unit-testing junit mockito