我是靠谱客的博主 甜蜜冰棍,这篇文章主要介绍Mockito结合spring进行跨层 mockspring web 业务系统单测使用Jmockit 进行夸层mock 也可以static 方法mock 方法1:方法2:,现在分享给大家,希望可以做个参考。

spring web 业务系统单测使用Jmockit 进行夸层mock 也可以static 方法mock 

  总体不如Jmockit.

推荐方法3

方法1:

   较繁琐,  找到被使用方B, 设置@InjectMocks B, 然后设置@Mock C

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
行 public class RoomManagerSpringMockTest extends BaseSpringMockTest { @Resource A a; @Resource @InjectMocks B b; @Mock private C c; @Test public void test() { PowerMockito.when(c.call()).thenReturn(2); a.ACallB(); } }

方法2:

    手动通过ReflectionTestUtils 反射修改值

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest public class JavaLogAnnotationApplicationTests { @Autowired private ServiceA serviceA; @Autowired private ServiceB serviceB; private ServiceC serviceC; @Before public void setup() { serviceC = Mockito.mock(ServiceC.class); ReflectionTestUtils.setField(serviceB, "serviceC", serviceC); } @Test public void test() { when(serviceC.test(any(String.class))).thenRetrun(null); serviceA.test(); } ———————————————— 版权声明:本文为CSDN博主「LMSX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/hdzhangpei/article/details/83376993

方法3: spring方法调用切面

     调用的时候替换成mock对象.

     过程 1. mock一个对象, 2. 调用mockBean池子的collect接口,把想要mock的类给记录下. 3. mockitio.when设置mock属性 4. 设置方法调用切面,把对应的类的调用拦截下来,转调用mockBean池子里的类.

方法4: 把bean初始化拦截下来,替换成mockBean. 但是无法拦截bean的初始化. 只能mock bean的调用

    

附录

最后

以上就是甜蜜冰棍最近收集整理的关于Mockito结合spring进行跨层 mockspring web 业务系统单测使用Jmockit 进行夸层mock 也可以static 方法mock 方法1:方法2:的全部内容,更多相关Mockito结合spring进行跨层内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部