我尝试使用JUnit和Mocktio为类创建UnitTest。 在这个类中,有一些来自单例的方法的调用,比如
Singleton.getInstance().doSomething(value);
我知道值的类型。 (构造函数中没有参数或处理单例引用的任何方法) 是否有可能嘲笑Singleton?我的第一个想法只是调用Mockito.mock(Singleton.class)并将其作为参数传递,但后来我必须更改此类以接受单例作为参数 - 这对我来说没有意义。
(我同意这可能是一个设计缺陷,但目前我无法重构该单身人士的使用)。
答案 0 :(得分:1)
这里的问题是Mockito不允许模拟静态方法(getInstance
)。但是,JMockit
和Powermock
都允许这样做。
使用Mockito的另一个选项可能取决于getInstance
中的代码。如果这是检查/返回字段,您可以使用反射将该字段分配给模拟实例。