Método de burlarse de getClass con PowerMockito

Me gustaría evitar burlarse del método getClass () para una clase, pero parece que no puede encontrar ninguna forma de evitarlo. Estoy tratando de probar una clase que almacena tipos de clase de objetos en un HashMap a un método particular para usar más adelante. Un breve ejemplo de esto es:

public class ClassToTest {
    /** Map that will be populated with objects during constructor */
    private Map<Class<?>, Method> map = new HashMap<Class<?>, Method>();

    ClassToTest() {
        /* Loop through methods in ClassToTest and if they return a boolean and 
           take in an InterfaceA parameter then add them to map */
    }

    public void testMethod(InterfaceA obj) {
        final Method method = map.get(obj.getClass());
        boolean ok;
        if (method != null) {
             ok = (Boolean) method.invoke(this, obj);
        }
        if (ok) {
            obj.run();
        }
    }

    public boolean isSafeClassA(final ClassA obj) {
        // Work out if safe to run and then return true/false
    }

    public boolean isSafeClassB(final ClassB obj) {
       // Work out if safe to run and then return true/fals 
    }

}

public interface InterfaceA {
   void run()
}

public class ClassA implements InterfaceA {
   public void run() {
      // implements method here
   }
}

public class ClassB implements InterfaceA {
    public void run() {
       // implements method here
    }
}

Luego tengo una prueba de JUnit que se ve un poco así:

@RunWith(PowerMockRunner.class)
@PrepareForTest({ClassA.class})
public class ClassToTestTest {
    private final ClassToTest tester = new ClassToTest();

    @Test
    public void test() {
        MockGateway.MOCK_GET_CLASS_METHOD = true;
        final ClassA classA = spy(new ClassA());
        doReturn(ClassA.class).when(classA).getClass();
        MockGateway.MOCK_GET_CLASS_METHOD = false;

        tester.testMethod(classA);
        verify(classA).run();
    }
}

Mi problema es aunque dentro del método test () classA.getClass (); devolverá ClassA, una vez que esté dentro del método testMethod () del tester, todavía devolverá la clase ClassA $ EnhancerByMockitoWithCGLIB $ ... y, por tanto, mi objeto útil siempre será nulo.

¿Hay alguna manera de poder burlarme de la clase o qué debo hacer para solucionar esto?

Gracias por adelantado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta