日期:2014-05-20  浏览次数:20974 次

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

------解决方案--------------------
For example:
Java code
public interface MyInterface {
    public String getName();
}

public class B implements MyInterface {
...
}

public class BB implements MyInterface {
...
}

------解决方案--------------------
mockito http://mockito.org/

Java code
 //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());

------解决方案--------------------
可以通过classloader来加载Mock类B,让Mock类B屏蔽掉实际的类B
------解决方案--------------------
new A(new B())...