Java mock 测试A类 a方法 a方法调用A类的b方法 ,怎么让他不执行b方法
时间: 2024-09-30 09:16:30 浏览: 34
在Java中使用Mockito进行单元测试时,如果你想让`A`类的`a`方法调用`B`方法的部分不执行,通常我们不会直接阻止`b`方法的执行,因为Mockito的目标是隔离并控制测试对象。但是,可以采取一些策略来模拟`b`方法的行为。
首先,你需要创建`A`类和`B`类的Mock对象:
```java
// 创建A类的Mock对象
@Mock
AClass aClassMock;
// 创建B类的Mock对象
@Spy
BClass bClassMock = new BClass(); // 使用Spy来监视并替换b方法
// 初始化 Spy,使得 b方法的原始实现变为 Mock
PowerMockito.spy(bClassMock);
```
然后,在`a`方法的模拟部分,你可以选择不调用`b`方法,或者提供预设的返回值,使其看起来像是已经执行了,但实际上没有真正调用`bClassMock`的方法:
```java
// 模拟a方法,不执行对b方法的实际调用
when(aClassMock.aMethod()).thenReturn(someResult);
// 或者设置b方法的返回值,看起来像是执行过了
when(bClassMock.bMethod()).thenReturn(expectedResult);
Mockito.doNothing().when(bClassMock).bMethod();
```
在测试结束后,记得清理Mock和Spy的状态:
```java
verify(aClassMock).aMethod();
verifyNoMoreInteractions(aClassMock, bClassMock); // 确认b方法没有被调用
```
阅读全文