2015-05-19 2 views
4

Мой сценарий, как показано нижеКак издеваются метод суперкласса с помощью Mockito или anyother relavent Java рамки

class SuperClass{ 
    public void run(){ 
     System.out.println("I am running in Super class"); 
    } 
} 

class ChildClass extends SuperClass{ 
    public void childRunner(){ 
    System.out.println("Step 1"); 
    System.out.println("Step 2"); 
    **run();** 
    System.out.println("Last Step"); 
    } 
} 

Теперь я хочу, чтобы дразнить childRunner() метод ChildClass и так как этот метод внутренне вызывает метод суперкласса, я нужна некоторая помощь/часть кода о том, как издеваться над методом run(), который присутствует в методе childRunner()ChildClass.

ответ

5

Похожие на что-то обсуждали здесь: Mockito How to mock only the call of a method of the superclass

Это должно работать:

@Test 
public void tst() { 
    ChildClass ch = Mockito.spy(new ChildClass()); 
    Mockito.doNothing().when((SuperClass)ch).run(); 
    ch.childRunner(); 

} 

class SuperClass{ 
    public void run(){ 
     System.out.println("I am running in Super class"); 
    } 
} 

class ChildClass extends SuperClass{ 
    public void childRunner(){ 
     System.out.println("Step 1"); 
     System.out.println("Step 2"); 
     run(); 
     System.out.println("Last Step"); 
    } 
} 

выход:

Step 1 
Step 2 
Last Step 

В случае, если вы используете super.run(); это не сработает

Смежные вопросы