2015-05-19 28 views
4
嘲笑超類方法

我的方案是如下如何使用的Mockito或任何其它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"); 
    } 
} 

現在我想嘲笑的ChildClasschildRunner()方法,因爲這種方法在內部調用父類的方法,我需要一些關於如何模擬childRunner()方法中的run()方法的幫助/一段代碼。

回答

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();這將不起作用

相關問題