AssertJ List in Java with Examples - AssertJ 155

AssertJ List in Java with Examples – AssertJ 155

AssertJ List in Java with Examples

提高了測試程式碼的可讀性,基本方法是 assertThat 方法,驗證 List 是否相同元素、大小, AssertJ List in Java 本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

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

單元測試

AssertJ List Java 斷言集合的主要目的是取得集合的正確元素以進行斷言。

has

驗證是否符合條件,若不成立,則會拋出 AssertionError 。

	@Test
	public void has() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		Condition<List<?>> size = new Condition<List<?>>(s -> s.size() > 2, "size");
		assertThat(list).has(size);

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		Condition<List<?>> intSize = new Condition<List<?>>(i -> i.size() > 2, "size");
		assertThat(intList).has(intSize);
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

hasOnlyOneElementSatisfying

AssertJ List Java 驗證只有一個元素符合條件,若不成立,則會拋出 AssertionError 。

	@Test
	public void hasOnlyOneElementSatisfying() {
		List<String> list = Arrays.asList("Apple");
		System.out.println(list);
		// @Deprecated
		assertThat(list).hasOnlyOneElementSatisfying(e -> {
			assertThat(e).hasSize(5);
		});
		// use singleElement
		assertThat(list).singleElement().matches(e -> e.length() == 5);

		List<Integer> intList = Stream.of(10).collect(Collectors.toList());
		System.out.println(intList);
		// @Deprecated
		assertThat(intList).hasOnlyOneElementSatisfying(e -> {
			assertThat(e).isGreaterThan(9);
		});
		// use singleElement
		assertThat(intList).singleElement().matches(e -> e > 9);
	}
[Apple]
[10]

hasSize

AssertJ List Java 驗證大小是否為指定值,若不成立,則會拋出 AssertionError 。

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

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

hasSizeBetween

AssertJ List Java 驗證大小是否介於起始值之間,若不成立,則會拋出 AssertionError 。

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

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

hasSizeGreaterThan

AssertJ List Java 驗證大小是否大於指定值,若不成立,則會拋出 AssertionError 。

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

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

hasSizeLessThan

Java AssertJ List 驗證大小是否小於指定值,若不成立,則會拋出 AssertionError 。

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

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

hasToString

Java AssertJ List 驗證 toString 是否相等,若不成立,則會拋出 AssertionError 。

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

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

hasSameSizeAs

Java AssertJ List 驗證大小是否相等,若不成立,則會拋出 AssertionError 。

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

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

hasSameElementsAs

Java AssertJ List 驗證元素是否相等,若不成立,則會拋出 AssertionError 。

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

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

doesNotHave

Java AssertJ List Example 驗證是否不符合條件,若不成立,則會拋出 AssertionError 。

	@Test
	public void doesNotHave() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		Condition<List<?>> size = new Condition<List<?>>(s -> s.size() > 3, "size");
		assertThat(list).doesNotHave(size);

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		Condition<List<?>> intSize = new Condition<List<?>>(s -> s.size() > 5, "size");
		assertThat(intList).doesNotHave(intSize);
	}
[Apple, Banana, Cherry]
[6, 7, 8, 9, 10]

doesNotHaveDuplicates

Java AssertJ List Example 驗證元素是否不重複,若不成立,則會拋出 AssertionError 。

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

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

AssertJListWithExamplesTest.java

Java 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.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.assertj.core.api.Condition;
import org.junit.jupiter.api.Test;

public class AssertJListWithExamplesTest {

	@Test
	public void has() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		Condition<List<?>> size = new Condition<List<?>>(s -> s.size() > 2, "size");
		assertThat(list).has(size);

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		Condition<List<?>> intSize = new Condition<List<?>>(i -> i.size() > 2, "size");
		assertThat(intList).has(intSize);
	}

	@Test
	public void hasOnlyOneElementSatisfying() {
		List<String> list = Arrays.asList("Apple");
		System.out.println(list);
		// @Deprecated
		assertThat(list).hasOnlyOneElementSatisfying(e -> {
			assertThat(e).hasSize(5);
		});
		// use singleElement
		assertThat(list).singleElement().matches(e -> e.length() == 5);

		List<Integer> intList = Stream.of(10).collect(Collectors.toList());
		System.out.println(intList);
		// @Deprecated
		assertThat(intList).hasOnlyOneElementSatisfying(e -> {
			assertThat(e).isGreaterThan(9);
		});
		// use singleElement
		assertThat(intList).singleElement().matches(e -> e > 9);
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	@Test
	public void doesNotHave() {
		List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
		System.out.println(list);
		Condition<List<?>> size = new Condition<List<?>>(s -> s.size() > 3, "size");
		assertThat(list).doesNotHave(size);

		List<Integer> intList = Stream.of(6, 7, 8, 9, 10).collect(Collectors.toList());
		System.out.println(intList);
		Condition<List<?>> intSize = new Condition<List<?>>(s -> s.size() > 5, "size");
		assertThat(intList).doesNotHave(intSize);
	}

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

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

心得分享

Java AssertJ List Example 為用 Java 編寫的測試程式提供了流暢的斷言語句,這些斷言語句通常與 JUnit 測試一起使用, AssertJ 斷言的基本方法是 assertThat 方法,驗證 List 是否相同元素、大小,善用 Java AssertJ List 將有助於驗證效率的提升。

發佈留言