亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 測試除零

Java 測試除零

繁花不似錦 2023-08-16 10:15:47
我正在嘗試測試除以零的功能。如果我這樣做:System.out.println(5/0),我會得到java.lang.ArithmeticException我正在嘗試測試是否引發了異常。這是我的單元測試: @Test(expected = ArithmeticException.class)    public void given_divideByZeroInput_when_divideByZero_then_verify_throwing_exception() {        MathClass sut = new MathClass();        sut.div(10,0);    }我的div就是這么簡單: public float div(int x, int y) {        return (float) x/y;    }但是,單元測試失敗,指出:java.lang.AssertionError: Expected exception: java.lang.ArithmeticException我做錯了什么?我知道有很多方法可以測試拋出的異常,但我試圖堅持使用簡單的方法@Test(excepted = .. )
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

答案:

您正在將 x 轉換為浮點數。因此,您沒有像在第一個代碼片段中那樣進行整數除法,而是進行浮點除法。因此,結果就是 Infinity,這也不例外。

但還有一點需要解釋:

????return?(float)?x/y;

方法

  1. 轉換xfloat

  2. ((float) x) / y使用浮點運算執行計算

  3. 返回值

當您移除石膏時:

????return?x/y;

方法

  1. x/y使用整數算術執行計算

  2. 將值轉換為浮點數(隱式?。?/p>

  3. 返回值

因此,實際上存在許多(潛在的)概念錯誤可能導致您犯下錯誤。

  • 類型轉換的優先級高于/.

  • 使用 32 位浮點算術執行涉及 anint和 a 的算術運算。floatint操作數將被擴展為 a?float

  • 加寬也發生在“賦值上下文”中,語句return就是賦值上下文。


查看完整回答
反對 回復 2023-08-16
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號