tl; dr:我如何在运行时 - 出于测试目的 - 将另一个元素添加到枚举中?我确信必须使用一些字节操作库,例如 PowerMockito 的工作方式等。我不认为这是“我可以在 Java 运行时添加和删除枚举元素”的副本,因为我愿意忍受您不会在生产代码中进行的那种字节操作或类加载器黑客攻击,因为它是用于测试的。
我正在编写 Java 单元测试并运行单元测试覆盖率报告。我无法到达的唯一行是在代码中,我在语句中有一个default
案例,其中所有枚举都包含在案例中。switch
enum
枚举宠物{猫,狗;}
然后像这样的代码
final String speak;
switch( myPet ){
case CAT:
speak = "meow";
break;
case DOG:
speak = "ruff";
break;
default:
throw new IllegalArgumentException( "should not get here" );
}
System.out.println( speak );
我需要default
声明,否则会javac
抱怨正在使用的最后一行speak
可能未初始化。
但是,我无法覆盖该行,因为没有其他值,并且我不想为测试目的向生产代码添加额外的枚举值。