我知道这是可能的嘲笑(使用How to mock an enum singleton class using Mockito/Powermock?)一个枚举,但我有这样枚举值的1000,他们可以调用5层不同的构造。枚举值在开发中经常发生变化。JUnit测试:通过嘲笑抑制枚举构造函数?
我想真正嘲笑只为我的JUnit测试一个或两个。我不关心其余的,但他们仍然实例化,它调用一些讨厌的东西,它从文件系统加载枚举的值。
是的,我知道这是非常糟糕的设计。但现在我没有时间去改变它。
目前我们已经在使用的Mockito/powermock。但任何框架,可以解决这个问题**我的意思是糟糕的设计是值得欢迎的。
比方说,我有类似这样的枚举:
public static enum MyEnum {
A(OtherEnum.CONSTANT),
B("1"),
C("1", OtherEnum.CONSTANT),
//...and so on for again 1000 enum values :(
private double value;
private String defaultValue;
private OtherEnum value;
/* Getter/Setter */
/* constructors */
}
enum中的一个_setter_?呃,sh **确实是合适的词 – fge
一个快速解决方法可能是让'enum'实现一个'interface',然后可以被模拟。这是一个黑客攻击,但可以让你现在编写你的测试,然后你应该重构 –
看看[JMockit](https://code.google.com/p/jmockit/)。 –