当我用Mockito.mock()模拟一个对象时,我希望该对象有存根方法返回null、0、false等,而没有我模拟的真实对象的任何代码。我认为这是Java的默认行为,但Android似乎将真实对象作为模拟的一部分。我该如何避免这种情况?
public class MockTest extends InstrumentationTestCase {
public void testMock() {
Engine engine = mock(Engine.class);
Car car = new Car(engine);
car.start(); // Null pointer error, because Engine.starter is null.
verify(engine, Mockito.times(1)).engageStarter();
}
public static class Car {
private final Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public void start() {
engine.engageStarter();
}
}
public static class Engine {
private final Starter starter;
public Engine(Starter starter) {
this.starter = starter;
}
void engageStarter() {
starter.spin();
}
}
public static class Starter {
public void spin() {
System.out.println("Start or explode");
}
}
}发布于 2015-02-12 02:49:40
解决方案是使engageStarter()成为公共的。
https://stackoverflow.com/questions/28461517
复制相似问题