1前書き

この短い記事では、2つの

List

インスタンスに同じ要素がまったく同じ順序で含まれているかどうかをテストするという共通の問題に焦点を当てます。



List




ordered

データ構造なので、要素の順序は設計上重要です。

__httpsからの抜粋を見てください。 :

  1. 2つのリストが同じ要素を含む場合、それらは等しいと定義されます。

同じ順番。

この定義により、equalsメソッドがListインタフェースのさまざまな実装にわたって正しく機能するようになります。

アサーションを書くときにこの知識を使うことができます。

次のコードスニペットでは、入力例として次のリストを使用します。

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

純粋なJUnitテストでは、以下の主張が当てはまります。

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


3 TestNG

TestNGのアサーションを使用する場合、それらはJUnitのアサーションと非常によく似ていますが、注意することが重要です。クラスは別のパッケージから来ています。

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


4アサートJ


AssertJ

を使用する場合は、次のようになります。

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

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


5結論

この記事では、2つの

List

インスタンスが同じ要素を同じ順序で含んでいるかどうかをテストする方法を調べました。この問題の最も重要な部分は、

List

データ構造がどのように機能するように設計されているかを正しく理解することです。

すべてのコード例はhttps://github.com/eugenp/tutorials/tree/master/core-java-collections[GitHub]にあります。