0
点赞
收藏
分享

微信扫一扫

关于mock使用注意点

雷亚荣 2022-04-13 阅读 67
java

如果类A中使用了B类,如:

类A如下

class A {

B b;

boolean test1(int x){};

void test2(){};

}

类B如下:

class B {

C c;

boolean testb(Object o){};

}

在写A的单测时需要mock 掉B类中所有的方法,并且需要mock掉A类自己的一下方法,则需要在单测中A类引用上加注解@Spy,因为要mock掉B的方法,所以A累上还需要加@InjectMocks,如下:

class test_A {

@Spy

@InjectMocks

A a;

@Mock

B b;

@Before

void init(){

MockitoAnnotations.initMocks(this);

}

@Test

void test_A(){

Mockito.when(B.testb(Mockito.any())).thenReturn(true);

doReturn(true).when(a).test1(Mockito.anyInt());//如果要mockA类中自己的方法,必须将返回值放在前面

}

}

对于Object类型参数使用Mockito.any()就行,对于String类型参数使用Mockito.anyString(),

对于int类型参数使用Mockito.anyInt(),

对于无返回值的使用Mockito.doNothing().when(类名,如A).方法名(Mockito.any());这种可以mock掉A类自己无返回值的方法。

举报

相关推荐

0 条评论