I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE COURSE

1. Introduction

In this short article we’ll focus on the common problem of testing if two List instances contain the same elements in exactly the same order.

List is an ordered data structure so the order of elements matters by design.

have a look at an excerpt from the List#equals Java documentation:

… two lists are defined to be equal if they contain the same elements in the same order.

This definition ensures that the equals method works properly across different implementations of the List interface.

We can use this knowledge when writing assertions.

In the following code snippets, we will be using the following lists as example inputs:

List<String> list1 = Arrays.asList("1", "2", "3", "4");
List<String> list2 = Arrays.asList("1", "2", "3", "4");
List<String> list3 = Arrays.asList("1", "2", "4", "3");

2. JUnit

In a pure JUnit test, the following assertions with be true:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    Assert.assertEquals(list1, list2);
    Assert.assertNotSame(list1, list2);
    Assert.assertNotEquals(list1, list3);
}

3. TestNG

When using TestNG’s assertions they will look very similarly to JUnit’s assertions, but it’s important to notice that the Assert class comes from a different package:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    Assert.assertEquals(list1, list2);
    Assert.assertNotSame(list1, list2);
    Assert.assertNotEquals(list1, list3);
}

4. AssertJ

If you like to use AssertJ, it’s assertions will look as follows:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    assertThat(list1)
      .isEqualTo(list2)
      .isNotEqualTo(list3);

    assertThat(list1.equals(list2)).isTrue();
    assertThat(list1.equals(list3)).isFalse();
}

5. Conclusion

In this article, we have explored how to test if two List instances contain the same elements in the same order. The most important part of this problem was the proper understanding of how the List data structure is designed to work.

All code examples can be found on GitHub.

I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE LESSONS