我是靠谱客的博主 甜蜜冰棍,这篇文章主要介绍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进行跨层内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复