嘗試使用PowerMockito ..它總決賽和靜態交易得好:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
懲戒final類:
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({MyFinalClass.class})
public class MyTest {
@Test
public void myFinalClassTest() {
MyFinalClass finalMock= PowerMockito.mock(MyFinalClass .class);
Mockito.when(finalMock.toString()(testInput)).thenReturn("abc");
// Assertions
}
}
您可以使用此功能只在需要的地方。在所有其他您可以保留原始的Mockito用法。
我不允許修改我的項目的POM,我也無法從「finall」改變類 –