如何mock静态方法

如何mock静态方法

首页维修大全综合更新时间:2023-09-15 13:59:04

如何mock静态方法

因为Mockito使用继承的方式实现mock的,用CGLIB生成mock对象代替真实的对象进行执行,为了mock实例的方法,你可以在subclass中覆盖它,而static方法是不能被子类覆盖的,所以Mockito不能mock静态方法。

但PowerMock可以mock静态方法,因为它直接在bytecode上工作,类似这样:

import org.powermock.api.mockito.PowerMockito;import org.powermock.core.classloader.annotations.PrepareForTest;import org.powermock.modules.testng.PowerMockTestCase;import org.testng.Assert;import org.testng.annotations.Test;@PrepareForTest(AbstractAnimal.class)public class AbstractAnimalTest extends PowerMockTestCase {@Testpublic void shouldGetMockedHello() {PowerMockito.mockStatic(AbstractAnimal.class)

;PowerMockito.when(AbstractAnimal.getHello()).thenReturn("Hello mocked animal world!")

;String greetings = AbstractAnimal.getHello()

;Assert.assertTrue(greetings.equals("Hello mocked animal world!"));}}

大家还看了
也许喜欢
更多栏目

© 2021 3dmxku.com,All Rights Reserved.