当前位置:首页>维修大全>综合>

如何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!"));}}

更多栏目