Junit中Assert.assertEquals()和Assert.assertSame方法有什么异同
2024-09-06 22:39:09
1)提供的接口数量不完全相同。
assertEquals支持boolean,long,int等等java primitiveType变量。
assertSame只支持Object。
2)比较的逻辑不同,结果可能不同。
assertSame是对象直接比较。assertEquals能利用被比较对象提供的比较逻辑来进行比较。
使得同样的条件下,两者的运行结果不一定相同。
简单解释如下:
assertEquals(Object A, Object B) 的比较逻辑:
如果 A,B都是Null,返回true。否则调用 A.equals(B)来判断。
assertSame(Object A, Object B)的比较逻辑:
以A == B运算的结果来判断。
A.equals(B) 和 A==B 的差别在于。
如果A没有重写java.lang.Object的equals方法,
那么就是两个java对象的内存地址比较,比较结果和 A==B的结果相同。
如果A重写了equals方法(比如GregorianCalendar,BigDecimal类),
那么比较的结果不一定和A==B的结果相同。
最新文章
- Winform(DataGridView)控件及通过此控件中实现增删改查
- [转]office 2016 4合1/3合1 专业版 增强版 精简绿色安装版
- 将IIS6.0中的某页设置成首页
- Android 各层调用的方式
- 演练:使用Xamarin.Forms开发产品介绍性质的应用(VB版)
- 编写高质量代码改善C#程序的157个建议[10-12]
- Codeforces 475 B Strongly Connected City【DFS】
- Chapter12:动态内存
- 《服务器的追踪与审计》RHEL6
- 山东理工大学ACM平台题答案关于C语言 1543 Egypt
- Dev XtraTreeList 学习
- 微信小程序正式发布!这是最全的上手指南
- hdoj 1072 Nightmare
- jQuery 选择器和JavaScript 选择器的技巧与异常原因
- 搭建PHP建站环境
- Extjs中创建Tree菜单【一】
- Innodb中的锁
- Selenium 3 没办法启用指定的Firefox Profile
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-3禁止交换和禁用大页面
- 我喜欢的vs+va快捷键