【问题标题】:unit test avoid class B constructor call in class A test method单元测试避免在 A 类测试方法中调用 B 类构造函数
【发布时间】:2017-11-23 00:33:29
【问题描述】:
我有 ClassA 和 ClassB,我在 Class B 构造函数中实例化了一些仪器依赖项,所以我想避免在测试 Class A 的 foo 方法时调用 Class B 构造函数。 A 类的 foo 方法创建了 B 类的一个实例。我正在使用 mockito 有没有办法告诉测试用例,当调用 TestClassA.foo() 方法时不要实例化 ClassB,而是返回虚拟 ClassB。
【问题讨论】:
标签:
java
android
unit-testing
【解决方案1】:
我通过将 B 类实例化责任委托给工厂类解决了我的这个问题。
然后在测试的时候使用mockito来模拟工厂类,调用makeClassB()方法获取ClassB的实例,同样使用Mockito.when(factoryMock.makeClassB(anyParameters)).thenReturn(MockClassB)
现在在 TestClassA 中我可以调用 ClassA 的 foo() 方法,该方法现在使用 Factory 类来创建 ClassB 的实例,而不是直接创建 ClassB 实例。
查看此帖子https://stackoverflow.com/a/21262999/3805770。