JUnit中assertEquals和assertSame方法的不同
时间: 2024-02-24 14:56:30 浏览: 25
在JUnit中,assertEquals和assertSame方法都用于比较两个对象是否相等,但它们的比较方式不同。
assertEquals方法会比较两个对象的值是否相等,即使用equals方法进行比较。如果相等,则测试通过。例如:
```
String str1 = "hello";
String str2 = "hello";
assertEquals(str1, str2); // 通过测试
```
assertSame方法则比较两个对象是否是同一个对象,即比较它们的引用是否相等。如果相等,则测试通过。例如:
```
String str1 = "hello";
String str2 = "hello";
assertNotSame(str1, str2); // 通过测试
```
需要注意的是,如果两个对象的值相等,但它们的引用不同,那么assertEquals方法会返回false,而assertSame方法会返回true。因此,选择合适的方法取决于你需要比较的对象类型和比较方式。
相关问题
assertEquals和assertsame区别
assertEquals和assertSame是JUnit测试框架中的两个方法,它们的区别在于比较的逻辑不同。
assertSame是对象直接比较,即比较两个对象是否是同一个对象,如果是同一个对象则测试通过,否则测试失败。
assertEquals能利用被比较对象提供的比较逻辑来进行比较,即比较两个对象的值是否相等,如果相等则测试通过,否则测试失败。具体来说,如果A和B都是null,则返回true;否则调用A.equals(B)来判断。
需要注意的是,同样的条件下,两者的运行结果不一定相同。因此,在使用时需要根据具体情况选择合适的方法。
JUnit中assertEquals的用法
在JUnit中,assertEquals是用于比较两个对象是否相等的方法,它有多种用法。
1. 比较基本数据类型
比较两个基本数据类型的值是否相等,例如:
```
int a = 1;
assertEquals(1, a);
```
2. 比较对象的值是否相等
比较两个对象的值是否相等,即使用equals方法进行比较,例如:
```
String str1 = "hello";
String str2 = "hello";
assertEquals(str1, str2);
```
3. 比较数组的值是否相等
比较两个数组的值是否相等,例如:
```
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
assertEquals(arr1, arr2);
```
4. 比较对象的属性是否相等
比较两个对象的属性是否相等,例如:
```
Person p1 = new Person("Tom", 18);
Person p2 = new Person("Tom", 18);
assertEquals(p1.getName(), p2.getName());
assertEquals(p1.getAge(), p2.getAge());
```
需要注意的是,如果比较的对象类型没有实现equals方法,那么assertEquals方法会使用默认的比较方式,即比较它们的引用是否相等。如果需要自定义比较方式,可以考虑使用assertThat方法结合自定义Matcher来实现。