【问题标题】:Add value to enum for testing switch's default case为枚举添加值以测试开关的默认情况
【发布时间】:2013-06-11 13:38:32
【问题描述】:

给定以下枚举:

public enum SupportedLoanProcessor {
    PRE_AUTHORIZED,
    ACCURED_INTEREST
 }

如果类型为 SupportedLoanProessor,则开关在值上工作

switch(processorType){
      case SupportedLoanProcessor.PRE_AUTHORIZED:
        result = processPreAuthorized allLendingsWithALoan, date
      break
      case SupportedLoanProcessor.ACCURED_INTEREST:
        result = processAccuredInterest allLendingsWithALoan, date
      break
      default:
        throw new IllegalArgumentException("Unknow loan processor: $processorType")
    }

如何测试默认情况。我正在使用groovy和junit。 我想在运行时修改枚举是可能的。但我不知道怎么做。

【问题讨论】:

  • This 应该有助于解决这个问题

标签: unit-testing groovy enums switch-statement


【解决方案1】:

默认情况不可能被执行,因为枚举除了被开关覆盖的值外没有其他值。

如果您尝试对您的应用程序进行未来证明,因为当有更多可能的值时,我的方法通常是在枚举中添加一个 None。

public enum SupportedLoanProcessor {
    None = 0,
    PRE_AUTHORIZED,
    ACCURED_INTEREST
}

【讨论】:

  • 你只为测试添加这个值?单独的测试和应用代码怎么样?
  • 不,我将它永久添加到枚举中。当使用零时,它还具有作为 .NET 中枚举的默认值的属性。我不知道它在 Java 中是如何工作的。
  • 我认为这不是很干净的方法。你混合测试和业务逻辑测试。
  • 回答时我没有意识到这是一个 Groovy/Java 问题。在 .NET 中,如果您有一个真正的值分配给 0,这将是默认值,这在业务逻辑中通常是不可取的。
猜你喜欢
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
  • 2011-10-27
  • 1970-01-01
  • 2010-12-22
  • 2018-09-16
相关资源
最近更新 更多