2016-05-13 35 views
-3

我正在測試類中的方法。這是調用抽象類的一種方法。從具體類拋出時調用抽象方法NullPointerException

如:

class abstract Abstract { 
    public ReturnObject abstractMethod(SomeObject value) { 
    // do something 
    return returnObject; 
    } 
} 

class Concreate extends Abstract { 
    public ReturnObject concreteMethod(SomeObject value) { 
    //do something 
    returnObject = abstractMethod(value); 
    return returnObject; 
    } 

} 

My UT is 

class ConcreateTest { 
    @InjectMocks 
    private Concreate conctrete; 

    @Mock 
    private Concreate conctrete2; 

    @Test 
    public void test_method() { 
    when(conctrete2.abstractMethod(value)).thenReturn(returnObject); 
    conctrete.concreteMethod(value); 
    } 

} 

這樣,它返回我NullPointerException異常。

+1

您沒有添加可編譯的最小代碼?看到你的代碼,我們無法幫助你,並添加錯誤跟蹤。得到快速解決方案。 – Ali786

+1

@FaizAli對不起,我拒絕你的編輯錯誤,認爲你是刪除空格,我道歉。但它會被批准,不用擔心。 –

回答

0

從您所展示的內容來看,我很少看到代碼來確定發生了什麼,但我看到的一件事是您正在嘲笑一個Concreate,然後將該模擬注入另一個Concreate。我沒有看到你在任何地方顯示的代碼告訴我一個Concreate使用另一個注入的Concreate。這實質上只是僞代碼。所以基本上我假設你的主要Concreate被注入到應用程序上下文中,並且你的其他Concreate被注入到第一個Concreate中。

你需要@Named來解決這個歧義,或者更一般地說,即使他們被嘲弄,你也必須給你的豆一個個人的名字。

相關問題