assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。
一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。
使用Assert的不利之处:
1、assert关键字需要在运行时候显式开启才能生效,否则你的断言就没有任何意义。而现在主流的Java IDE工具默认都没有开启-ea断言检查功能。这就意味着你如果使用IDE工具编码,调试运行时候会有一定的麻烦。并且,对于Java Web应用,程序代码都是部署在容器里面,你没法直接去控制程序的运行,如果一定要开启-ea的开关,则需要更改Web容器的运行配置参数。这对程序的移植和部署都带来很大的不便。
2、用assert代替if是陷阱之二。assert的判断和if语句差不多,但两者的作用有着本质的区别:assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,那在测试调试结束后去掉assert关键字就意味着修改了程序的正常的逻辑。
3、assert断言失败将面临程序的退出。这在一个生产环境下的应用是绝不能容忍的。一般都是通过异常处理来解决程序中潜在的错误。但是使用断言就很危险,一旦失败系统就挂了。
因此,应当避免在Java中使用assert关键字,除非哪一天Java默认支持开启-ea的开关,这时候可以考虑。对比一下,assert能给你带来多少好处,多少麻烦,这是我们选择是否使用的的原则。
https://blog.csdn.net/elizabethxxy/article/details/118353786
Assert常用方法
1.assertEquals(expected, actual)和assertNotEquals(expected, actual)
比较实际值与预期值是否一致。如果一致,程序继续运行,否则抛出异常,会打印报错信息。常用断言方法,便于调试。
2.assertTrue(message, condition)和assertFalse(message, condition)
如果条件的真假与预期相同,程序继续运行,否则抛出异常,不会打印报错信息。
3.assertNull(message, object)和assertNotNull(message, object)
判断一个对象是否为空,如果结果与预期相同,程序继续运行,否则抛出异常。
4.assertSame(expected, actual)和assertNotSame(expected, actual)
判断预期的值和实际的值是否为同一个参数(即判断是否为相同的引用),如果结果与预期相同,程序继续运行,否则抛出异常。
assertSame(expected, actual)和assertEquals(expected, actual)的区别
assertSame(A, B) ————————————> A==B
assertEquals(A, B)————————————>A.equals(B)
5.fail(message)
“fail”断言能使测试立即失败,这种断言通常用于标记某个不应该被到达的分支。例如测试中某个代码块要try catch,则在catch代码中加入fail(message)方法,否则代码直接进入catch块,无法判断测试结果。
原文链接:https://blog.csdn.net/lala_peng/article/details/84304336