Assertj 是一个流行的 Java 测试工具,它提供了一组强大的断言方法来简化测试代码的编写。当需要比较两个对象列表中的对象内容时,Assertj 提供了 containsExactly
方法来实现。
使用 containsExactly
方法可以确保两个对象列表中的对象内容完全相同,包括顺序和数量。
以下是使用 Assertj 比较两个对象列表中的对象内容的示例代码:
import org.assertj.core.api.Assertions;
public class ObjectComparisonExample {
public static void main(String[] args) {
// 创建两个对象列表
List<Person> expectedList = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30)
);
List<Person> actualList = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30)
);
// 使用 containsExactly 方法比较两个对象列表中的对象内容
Assertions.assertThat(actualList).containsExactly(expectedList.toArray(new Person[0]));
}
}
class Person {
private String name;
private int age;
// 构造方法和 getter/setter 方法省略
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
在上述示例中,我们创建了两个对象列表 expectedList
和 actualList
,每个列表包含两个 Person
对象。然后,我们使用 containsExactly
方法来比较两个对象列表中的对象内容是否相同。
如果两个对象列表中的对象内容完全相同(包括顺序和数量),则断言成功,测试通过。如果两个对象列表中的对象内容不同,断言失败,测试失败。
这是一个简单的例子,你可以根据具体的需求和对象类型,使用 Assertj 提供的其他断言方法来比较对象列表中的对象内容。
领取专属 10元无门槛券
手把手带您无忧上云