Table of Contents
ToggleUnit 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 將有助於驗證效率的提升。