assertThrows()表现良好,但它应该失败
创始人
2024-09-20 16:30:16
0

assertThrows()是JUnit 5中的一个断言方法,用于测试抛出异常的情况。例如,可以使用assertThrows()来测试方法是否会抛出NullPointerException或IllegalArgumentException等异常。

在某些情况下,assertThrows()可能会无法捕获异常,导致测试失败。这通常是由于测试方法本身已经捕获了异常,或者异常类型不正确。为了测试这种情况,我们可以手动添加一个失败条件来检测是否没有抛出预期的异常。

以下是示例代码,演示如何添加失败条件来测试assertThrows()是否起作用:

@Test void testDivideByZero_shouldThrowException() { Calculator calculator = new Calculator(); assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0), "Expected ArithmeticException to be thrown"); assertThrowsFail(); }

private void assertThrowsFail() { try { assertThrows(Exception.class, () -> {}); fail("assertThrows() failed to throw Exception"); } catch (AssertionError e) { // expected } }

上述代码首先使用assertThrows()测试divide()方法是否会抛出ArithmeticException。然后,它使用assertThrowsFail()方法来测试assertThrows()本身是否会抛出Exception。由于没有任何代码在lambda表达式中执行,这意味着assertThrows()应该会抛出一个异常。如果assertThrows()不抛出异常,fail()方法就会抛出一个AssertionError以产生失败条件。

通过这种方法,我们可以确保assertThrows()方法的可靠性,保证在测试中正确捕获异常。

相关内容

热门资讯

先前有辅助"欢乐二七... 您好:欢乐二七十娃这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别...
发现辅助!财神13游戏辅助器脚... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
一向有辅助"盛世辅助... 一向有辅助"盛世辅助插件"开挂(透视)辅助透视(曝光教程有挂解密)盛世辅助插件ai黑科技系统规律教程...
原来有开挂!佛手在线大菠萝的算... 原来有开挂!佛手在线大菠萝的算法是什么(透视)wpk辅助哪里买(透牌教程开挂辅助插件)您好:佛手在线...
从前有开挂"佛手十三... >>您好:佛手十三道辅助确实是有挂的,很多玩家在这款佛手十三道辅助游戏中打牌都会发现很多用户的牌特别...
正版辅助!wepoker辅助方... 正版辅助!wepoker辅助方法(透视)德普之星辅助器app(AA德州教程开挂辅助透视);无需打开直...
从来有辅助"wepo... 从来有辅助"wepoker私人局开挂视频"开挂(透视)辅助安装(必胜教程有挂功能);打开点击测试直接...
关于辅助!榕城510k辅助脚本... 关于辅助!榕城510k辅助脚本(透视)哈糖大菠萝助手(曝光教程开挂辅助脚本)>>您好:软件加薇136...
起初有开挂"悠悠辅助... 起初有开挂"悠悠辅助器"开挂(透视)辅助透视(揭秘教程揭秘有挂)1、下载安装好悠悠辅助器,进入游戏主...
详细辅助!莆田情怀脚本辅助器(... >>您好:莆田情怀脚本辅助器确实是有挂的,很多玩家在这款莆田情怀脚本辅助器游戏中打牌都会发现很多用户...