簡體   English   中英

NockPointerException當Mockito嘲笑ObjectOutputStream.writeObject嗎?

[英]NullPointerException when Mockito mocking ObjectOutputStream.writeObject?

我正在編寫一個jUnit測試,檢查類將什么寫入ObjectOutputStream。

具體來說,我正在檢查一個類是否正在以某種類型調用writeObject:

ObjectOutputStream out = mock(ObjectOutputStream.class);

out.writeObject(new Something());

verify(out).writeObject(isA(Something.class));

但是Java抱怨writeObject內部存在NullPointerException。

我需要存根解決此問題嗎?

Mockito無法做到這一點。 根據ObjectOutputStream javadocswriteOutput方法是最終的:

public final void writeObject(Object obj) throws IOException

在內部,Mockito實際上通過創建Proxy來模擬這些對象,該Proxy動態覆蓋ObjectOutputStream。 但是,由於writeObject方法是最終的,因此您無法覆蓋或模擬它,而Java會調用原始方法。 這被列為Mockito限制之一

盡管您可以針對writeObjectOverride進行驗證,但更好的選擇實際上是重構代碼,以直接使用ObjectOutput接口而不是ObjectOutputStream接口。 ObjectOutputStream實現ObjectOutput,而Mockito可以模擬接口的任何方法。

暫無
暫無

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

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