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