簡體   English   中英

預期:java.lang.Long<1> 但是是:java.lang.Integer<1>

[英]expected: java.lang.Long<1> but was: java.lang.Integer<1>

我正在使用 JUnit 來測試一些代碼。

本節如下:

    assertEquals(query.get(0).get("FEEDBACK_ID"), feedbackValues.getFeedbackId());

導致以下錯誤:

java.lang.AssertionError: expected: java.lang.Long<1> but was: java.lang.Integer<1>

哪個好...

我的問題是,如何轉換此對象:

query.get(0).get("FEEDBACK_ID")

變成整數以避免測試失敗? 我知道將右側的項目轉換為 long 會更容易,但我不想這樣做。

您想要實現的目標是錯誤的,因此唯一有效的答案是:不要這樣做。 基本上,您正在嘗試向您的方法添加行為以匹配您的測試。 你在這種情況下測試什么? 當然不是方法。 即使它發生的可能性很小,轉換為int也可能導致整數溢出並搞砸你的測試。

測試不應向測試方法的輸出添加額外的轉換,否則誰來測試這些額外的轉換? 為什么 API 不返回您要操作的類型?

您的方法應該返回相同的類型,或者您應該將int結果提升為long ,因為它是安全的。

暫無
暫無

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

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