【问题标题】:Extending / Mocking enums [duplicate]扩展/模拟枚举[重复]
【发布时间】:2012-06-11 14:08:09
【问题描述】:

可能重复:
Mocking Java enum to add a value to test fail case

我有一个适用于枚举的 switch 语句。开关的“默认”情况是抛出运行时异常。它的编码是这样的,以捕获有人向枚举添加值但忘记更新 switch 语句的情况。

我想测试这个执行路径,但我正在努力寻找一种方法来做到这一点,而不会将未使用的枚举值放入我的实时代码中。这是对枚举的滥用,还是有一种可接受的方式来编写这个测试?

【问题讨论】:

  • 你是否倾向于使用 Mockito 之类的模拟框架?
  • Mokito 无法做到这一点 afaik - 但看起来 PowerMock 可能是答案 - 我会调查它。谢谢
  • PowerMock 就像一个魅力 - 非常感谢您的建议。
  • 答案中没有,所以请投票。

标签: java enums junit4


【解决方案1】:

我认为你可以做的测试是有一个测试用例,你基本上可以得到你的枚举的所有值,比如

T[] allEnumValues = enumValue.getDeclaringClass().getEnumConstants();

T[] allEnumValues = enumType.values();

然后取出每一个并将其放入switch 语句中。如果你得到一个异常,你就有问题了。

PS:LinkgetEnumConstants() 方法。

【讨论】:

  • 这不是我想要的,但它是一种有趣的方法。我实际上想传入一个在 switch 语句中不存在的枚举值,以便我可以证明 RTE 被抛出。 (我的客户非常热衷于代码覆盖率.....)
猜你喜欢
  • 2013-12-07
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多