尽管进行了模拟,但实际方法仍在执行

时间:2020-04-27 12:21:13

标签: mockito

我是Java单元测试的新手,并开始使用Mockito。我正在使用doNothing ....,但是总是执行真正的方法。不知道我在想什么。

public abstract class MyApplication {
     private Square s;
     private Circle c;

     public MyApplication(Square s, Circle c){
       this.s = s;
       this.c = c;
     }    
     public void firstMethod() {
       System.out.println("Starting first Method");
       secondMethod();
       System.out.println("Ending first Method");
     }

     public void secondMethod() {
       //some business logic here
     }

}

public class SmallApplication extends MyApplication {
     private Square s;
     private Circle c;

     public SmallApplication(Square s, Circle c){
       this.s = s;
       this.c = c;
     }
}

public class MyApplicationTest {

    public void testFirstMethod() {
      Square smock = mock(Square.class);
      Circle cmock = mock(Circle.class);
      SmallApplication app = new SmallApplication(smock, cmock);
      SmallApplication appSpy = spy(app);
      doNothing().when(appSpy).secondMethod();
      appSpy.firstMethod();
   }
}

我不希望执行seconMethod的业务逻辑,但是使用上面的代码,总是执行第二种方法业务逻辑。请帮忙。

0 个答案:

没有答案