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