2016-08-19 98 views
0

我有一個static方法添加類SourceClass,我想重寫JUnit測試中的add方法的功能。 示例:如何重寫Junit測試中的靜態方法?

public class SourceClass { 
    protected static int add(int a, int b){ 
     //Do something 
    } 
} 

此SourceClass沒有任何構造函數。 JUnit類:

public class TestClass 
{ 
public void addTest() 
    { 
    //Trying to Override the add method here. 
    } 
} 

當我使用@Override,它不工作。 有人可以建議我,我們怎麼能做到這一點?

注:我不應該在測試類中使用@PrepareForTest

+0

您正在使用哪個版本的java? – ByeBye

+1

如果不擴展類,則無法覆蓋方法。據我瞭解你的財物,你要男人你想嘲笑這種方法 – Jens

+3

覆蓋在這種情況下沒有意義。你究竟在努力完成什麼? – Gray

回答

0

爲什麼你需要?靜態方法應該直接使用。另外,對於靜態方法,您不需要創建對象。作爲add方法是受保護的,我想你是對源你下面的測試相同的封裝結構,

public class TestClass 
{ 
@Test 
public void addTest() 
    { 
    assertEquals(SourceClass.add(2,5),7); 
    } 
} 
0

您可以覆蓋一個靜態方法,但是你不會有RTTI它。所以,你不會從重寫中獲得很多好處。

但是,正如有人在評論中所說的,只有在擴展包含它的類時纔會覆蓋方法。