我有一个类A的方法里面,调用了另外一个类B。我现在要对类A的方法进行测试,但是不知道如何Mock类B这样一个具体的类。

解决方案 »

  1.   

    For example:
    public interface MyInterface {
        public String getName();
    }public class B implements MyInterface {
    ...
    }public class BB implements MyInterface {
    ...
    }
    在A里:
    MyInterface b = new BB(); -> 这里用BB替代B。
    这是最常见的方式。
      

  2.   

    mockito  http://mockito.org/ //You can mock concrete classes, not only interfaces
     LinkedList mockedList = mock(LinkedList.class);
     
     //stubbing
     when(mockedList.get(0)).thenReturn("first");
     when(mockedList.get(1)).thenThrow(new RuntimeException());
      

  3.   

    可以通过classloader来加载Mock类B,让Mock类B屏蔽掉实际的类B
      

  4.   

    你要测试类A,里面用到了类B,那么类A要有一个类B的setter,把类B作为mock对象,类A实例化以后,通过setter把类B设定给类A实例化的对象,这样就实现了mock类B来测试类A。如果类A里没有setter,就无法把类B设定到类A里,那么类A在测试进行时用到的类B就是真实的类B,而不是mock的。
      

  5.   

    用Google mock实现,具体的还是自己看资料更明白