Powermockito可以在非最终具体类中模拟最终方法吗?

sur*_*ana 12 java unit-testing powermock

假设我有一个非最终的具体类,其最终方法如下所示.

public class ABC {
  public final String myMethod(){
      return "test test";
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能myMethod()junit使用时调用返回其他东西Powermockito?谢谢

gon*_*ard 26

这有效:

@RunWith(PowerMockRunner.class)
@PrepareForTest(ABC.class)
public class ABCTest {

    @Test
    public void finalCouldBeMock() {
        final ABC abc = PowerMockito.mock(ABC.class);
        PowerMockito.when(abc.myMethod()).thenReturn("toto");
        assertEquals("toto", abc.myMethod());
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么你们总是假设静态进口是显而易见的?提到你打电话给PowerMockito.when(...)是非常有帮助的(即使考虑到我们可以预期你使用PowerMockito的问题) (6认同)
  • 另外,请确保您是从org.powermock.api.mockito.PowerMockito而不是从org.mockito.Mockito静态导入`mock()`。我的IDE是从后一个程序包自动导入的,导致出现关于无法模拟最终方法的错误。 (3认同)