Unit Test AssertJ List with Examples - AssertJ 155

Unit Test AssertJ List with Examples – AssertJ 155

Unit Test AssertJ List with Examples

提供開發者單元測試驗證 API,可用於許多測試驗證場景,使用流式斷言,不須再物件自己呼叫方法,流暢地寫完驗證, AssertJ List Unit Test with Examples 介紹 containsAnyOf 、 containsAtIndex 、 containsSequence 、 containsSubsequence 等方法,本篇增加了範例,透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- spring_boot_168
       |               +- test
       |                   +- assertj
       |                       +- list
       |                           +- UnitTestAssertJListWithExamplesTest.java   

單元測試

Examples AssertJ List Unit Test 斷言列表的主要目的是取得列表的正確元素以進行斷言。

containsAnyOf

驗證包含任一元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void containsAnyOf() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).containsAnyOf("Grape", "Banana", "Kiwifruit");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsAnyOf(6, 1);
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

containsAtIndex

Examples AssertJ List Unit Test 驗證包含指定位置或索引的元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void containsAtIndex() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).contains("Apple", atIndex(0)).contains("Banana", atIndex(1)).contains("Cherry", atIndex(2));

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).contains(6, atIndex(0)).contains(8, atIndex(2));
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

containsSequence

Examples AssertJ List Unit Test 驗證依序包含元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void containsSequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).containsSequence("Banana", "Cherry");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsSequence(9, 10);
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

doesNotContainSequence

Examples AssertJ List Unit Test 驗證不依序包含元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void doesNotContainSequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).doesNotContainSequence("Grape", "Banana");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).doesNotContainSequence(1, 8);
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

containsSubsequence

Examples Unit Test AssertJ List 驗證依序包含元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void containsSubsequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).containsSubsequence("Apple", "Cherry");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsSubsequence(6, 10);
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

doesNotContainSubsequence

Examples Unit Test AssertJ List 驗證不依序包含元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void doesNotContainSubsequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).doesNotContainSubsequence("Cherry", "Apple");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).doesNotContainSubsequence(10, 6);
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

doesNotContainAnyElementsOf

Examples Unit Test AssertJ List 驗證不包含任何元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void doesNotContainAnyElementsOf() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		List<String> list2 = Arrays.asList("Grape", "Kiwifruit");
		System.out.println(list);
		System.out.println(list2);
		assertThat(list).doesNotContainAnyElementsOf(list2);

		List<Integer> intList = Arrays.asList(1, 2, 3, 4, 5);
		List<Integer> intList2 = Arrays.asList(8, 9);
		System.out.println(intList);
		System.out.println(intList2);
		assertThat(intList).doesNotContainAnyElementsOf(intList2);
	}
[Apple, Banana, Cherry]
[Grape, Kiwifruit]
[1, 2, 3, 4, 5]
[8, 9]

containsNull

Unit Test AssertJ List Example 驗證包含 null 元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void containsNull() {
		List<String> list = Arrays.asList("Apple", "Banana", null);
		System.out.println(list);
		assertThat(list).containsNull();

		List<Integer> intList = Stream.of(6, 7, 8, 9, null).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsNull();
	}
[Apple, Banana, null]
[6, 7, 8, 9, null]

doesNotContainNull

Unit Test AssertJ List Example 驗證不包含 null 元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void doesNotContainNull() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).doesNotContainNull();

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).doesNotContainNull();
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

contains

Unit Test AssertJ List Example 驗證包含指定的元素,若不成立,則會拋出 AssertionError 。

	@Test
	public void contains() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		Set<String> set = new HashSet<String>();
		set.add("Banana");
		set.add("Grape");
		System.out.println(set);
		
		assertThat(list)
			.contains("Apple")
			.containsAnyOf("Apple", "Grape")
			.containsExactly("Apple", "Banana", "Cherry")
			.doesNotContain("Grape")
			.anyMatch(set::contains);
	}
[Apple, Banana, Cherry]
[Grape, Banana]

UnitTestAssertJListWithExamplesTest.java

Examples Unit Test AssertJ List 新增單元測試,驗證是否符合預期。

package org.ruoxue.spring_boot_168.test.assertj.list;

import static org.assertj.core.api.Assertions.*;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.junit.jupiter.api.Test;

public class UnitTestAssertJListWithExamplesTest {

	@Test
	public void containsAnyOf() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).containsAnyOf("Grape", "Banana", "Kiwifruit");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsAnyOf(6, 1);
	}

	@Test
	public void containsAtIndex() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).contains("Apple", atIndex(0)).contains("Banana", atIndex(1)).contains("Cherry", atIndex(2));

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).contains(6, atIndex(0)).contains(8, atIndex(2));
	}

	@Test
	public void containsSequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).containsSequence("Banana", "Cherry");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsSequence(9, 10);
	}

	@Test
	public void doesNotContainSequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).doesNotContainSequence("Grape", "Banana");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).doesNotContainSequence(1, 8);
	}

	@Test
	public void containsSubsequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).containsSubsequence("Apple", "Cherry");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsSubsequence(6, 10);
	}

	@Test
	public void doesNotContainSubsequence() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).doesNotContainSubsequence("Cherry", "Apple");

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).doesNotContainSubsequence(10, 6);
	}

	@Test
	public void doesNotContainAnyElementsOf() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		List<String> list2 = Arrays.asList("Grape", "Kiwifruit");
		System.out.println(list);
		System.out.println(list2);
		assertThat(list).doesNotContainAnyElementsOf(list2);

		List<Integer> intList = Arrays.asList(1, 2, 3, 4, 5);
		List<Integer> intList2 = Arrays.asList(8, 9);
		System.out.println(intList);
		System.out.println(intList2);
		assertThat(intList).doesNotContainAnyElementsOf(intList2);
	}

	@Test
	public void containsNull() {
		List<String> list = Arrays.asList("Apple", "Banana", null);
		System.out.println(list);
		assertThat(list).containsNull();

		List<Integer> intList = Stream.of(6, 7, 8, 9, null).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).containsNull();
	}

	@Test
	public void doesNotContainNull() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		assertThat(list).doesNotContainNull();

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		assertThat(intList).doesNotContainNull();
	}

	@Test
	public void contains() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		Set<String> set = new HashSet<String>();
		set.add("Banana");
		set.add("Grape");
		System.out.println(set);
		
		assertThat(list)
			.contains("Apple")
			.containsAnyOf("Apple", "Grape")
			.containsExactly("Apple", "Banana", "Cherry")
			.doesNotContain("Grape")
			.anyMatch(set::contains);
	}
}

心得分享

Unit Test AssertJ List Example 提供流式判斷,還針對 List 做特殊判斷,在許多測試驗證的場景,讓開發者使用更流暢的驗證,不需要再寫迴圈,善用 Examples Unit Test AssertJ List 將有助於驗證效率的提升。

發佈留言