As an automation tester, I want to compare two lists to prove those are equal or not.
To do that, I can use function of AssertJ library (assertj-core) to compare two list
Prerequisite
To using AssertJ we have to add dependency into pom.xml file
<!-- https://mvnrepository.com/artifact/org.assertj/assertj-core -->
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.22.0</version>
<scope>test</scope>
</dependency>
Compare two lists objects
Example
I have some lists of user class
static List<User> firstList = new ArrayList<>();
static List<User> secondList = new ArrayList<>();
static List<User> thirdList = new ArrayList<>();
static List<User> fourthList = new ArrayList<>();
//Original list
firstList.add(new User("A",12,true,123.12));
firstList.add(new User("B",14,true,888));
firstList.add(new User("C",13,false,999));
//Same original list but different order
secondList.add(new User("A",12,true,123.12));
secondList.add(new User("C",13,false,999));
secondList.add(new User("B",14,true,888));
//Same original list
thirdList.add(new User("A",12,true,123.12));
thirdList.add(new User("B",14,true,888));
thirdList.add(new User("C",13,false,999));
I want to compare 2 lists with order and ignore order.
Compare 2 lists with order
Using following function we can compare two list that compare with order.
@Test
public void compare_with_order_with_2_equal_lists_have_same_order(){
assertThat(firstList).usingRecursiveComparison()
.isEqualTo(thirdList);
}
Compare 2 lists ignore order
Using following function we can compare two list and ignore about the order of items.
@Test
public void compare_ignore_order_with_2_equal_objects_have_different_order(){
assertThat(firstList).usingRecursiveComparison().ignoringCollectionOrder()
.isEqualTo(secondList);
}
Compare two lists String
Example
I have some lists of String class.
static List<String> firstList = new ArrayList<>();
static List<String> secondList = new ArrayList<>();
static List<String> thirdList = new ArrayList<>();
static List<String> fourthList = new ArrayList<>();
//Original list
firstList.add("A");
firstList.add("B");
firstList.add("C");
//Same original list but different order
secondList.add("A");
secondList.add("C");
secondList.add("B");
//Same original list
thirdList.add("A");
thirdList.add("B");
thirdList.add("C");
I want to compare those lists with order and ignore order.
Compare 2 lists with order
Using following function we can compare two list that compare with order.
@Test
public void compare_with_order_with_2_equal_lists_have_same_order(){
assertThat(firstList).usingRecursiveComparison()
.isEqualTo(thirdList);
}
Compare 2 lists ignore order
Using following function we can compare two list that compare ignore order.
@Test
public void compare_with_order_with_2_equal_lists_have_different_order(){
assertThat(firstList).usingRecursiveComparison()
.isEqualTo(thirdList);
}
Compare two lists Interger, Float and Double
We use the function to compare like the function that is used for two list String
Generate Single Page HTML Report For Maven Project