簡體   English   中英

Mockito.mock 不工作,使用 Mockito.when 導致 NullPointerException

[英]Mockito.mock is not working, using Mockito.when causes NullPointerException

我已經使用 Mockito 很長時間了。 使用 Mockito 4.7.0 版本(以及例如版本 3.12.4),代碼:

A a = mock(A.class);
when(a.doX()).thenReturn("X");

導致java.lang.NullPointerException在第二行。

當我打印變量a的內容時

System.out.println(a);

我也得到了“java.lang.NullPointerException”。

For any other class the Mockito.mock and Mockito.when are working perfectly and if I print a content of some other class instance b I got "Mock for B, hashcode: some hash code"

你知道可能是什么問題嗎? 我的示例被簡化了,我無法顯示實際的類。

我沒有你的代碼,但我盡量做到更通用。 我有像下面這樣的測試,效果很好。 希望能有所幫助。

@ExtendWith(MockitoExtension.class)
class MyTest {

    @Mock
    private AClass aclass;

    @Mock
    private BClass bclass;

    @Mock
    private CClass cclass;

    @Test
    void testExecute() {
        
        when(aclass.getAbc(any(String.class), any(Date.class), anyString()))
            .thenAnswer(i -> getAbc(i.getArgument(0), i.getArgument(1), i.getArgument(2)));

        when(bclass.isOk())
            .thenAnswer(i -> false);

        when(cclass.getCdf(anyString()))
            .thenAnswer(i -> getCdf());
        ...
        ...
        ...

    }

    private List<ABC> getAbc(final String myString, final Date now, final String x) {
        ...
        ...
        ...
    }

    private CDF getCdf() {
        ...
        ...
        ...
    }

}

如您所見,對於一個簡單的答案,我直接寫答案,對於更復雜的答案,我創建一個具有相同名稱的私有方法並將其用作答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM