Mockito bypass método estático para pruebas

Necesito probar el método handleIn () usando Mockito.

Sin embargo, el código debe llamar a este código heredado Util.getContextPDO, que es un método estático.

Tenga en cuenta que en el entorno de pruebas, este Util.getContextPDO siempre devuelve una excepción, y tengo la intención de omitir este Util.getContextPDO () siempre devolviendo un IPDO ficticio.

public class MyClass {
  public IPDO getIPDO() 
  {
    return Util.getContextPDO(); // note that Util.getContextPDO() is a static, not mockable.
  }

  public String handleIn(Object input) throws Throwable 
  {
    String result = "";
    IPDO pdo = getIPDO();

    // some important business logic.

    return result;
  } 
}

Inicialmente, pensé que esto era posible utilizando el espía () de la clase "MyClass", por lo que puedo burlarme del valor de retorno de getIPDO (). A continuación se muestra mi esfuerzo inicial con espía ()

@Test
public void testHandleIn() throws Exception
{
    IPDO pdo = new PDODummy();


    MyClass handler = new MyClass ();
    MyClass handler2 = spy(handler);

    when(handler2.getIPDO()).thenReturn(pdo);
    PDOUtil.setPDO(pdo, LogicalFieldEnum.P_TX_CTGY, "test123");
    IPDO pdoNew = handler2.getIPDO();

    Assert.assertEquals("test123,(PDOUtil.getValueAsString(pdoNew, LogicalFieldEnum.P_TX_CTGY)));

}

Sin embargo, elwhen (handler2.getIPDO ()). thenReturn (pdo); está lanzando la excepción que quiero evitar (porque handler2.getIPDO ()) parece llamar al método real.

¿Alguna idea sobre cómo probar esta parte del código?

Respuestas a la pregunta(3)

Su respuesta a la pregunta