Table of Contents
ToggleUnit Test Optional with AssertJ
提供了一組豐富的斷言和真正有用的錯誤訊息,提高了測試程式碼的可讀性,通常與 JUnit 測試一起使用, Unit Test Java AssertJ Optional 流式斷言,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- spring_boot_168
| +- test
| +- assertj
| +- optional
| +- UnitTestOptionalWithAssertJTest.java
單元測試
Java AssertJ Optional Unit Test 斷言 Optional 的主要目的是取得 Optional 以進行斷言。
is
驗證是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void is() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
Condition<Optional<String>> isNotEmpty = new Condition<Optional<String>>(o -> !o.get().isEmpty(), "isEmpty");
Condition<Optional<String>> lengthGreaterThan = new Condition<Optional<String>>(o -> o.get().length() > 2, "lengthGreaterThan");
assertThat(value).is(anyOf(isNotEmpty, lengthGreaterThan));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
Condition<Optional<Integer>> greaterThan = new Condition<Optional<Integer>>(o -> o.get() > 0, "greaterThan");
Condition<Optional<Integer>> lessThan = new Condition<Optional<Integer>>(o -> o.get() < 160, "lessThan");
assertThat(intValue).is(anyOf(greaterThan, lessThan));
}
Optional[AssertJ]
Optional[155]
isNot
Java AssertJ Optional Unit Test 驗證是否不符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void isNot() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
Condition<Optional<String>> isEmpty = new Condition<Optional<String>>(o -> o.get().isEmpty(), "isEmpty");
Condition<Optional<String>> lengthLessThan = new Condition<Optional<String>>(o -> o.get().length() < 2, "lengthLessThan");
assertThat(value).isNot(anyOf(isEmpty, lengthLessThan));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
Condition<Optional<Integer>> lessThan = new Condition<Optional<Integer>>(o -> o.get() < 0, "greaterThan");
Condition<Optional<Integer>> greaterThan = new Condition<Optional<Integer>>(o -> o.get() > 155, "lessThan");
assertThat(intValue).isNot(anyOf(greaterThan, lessThan));
}
Optional[AssertJ]
Optional[155]
isIn
Java AssertJ Optional Unit Test 驗證是否包含於陣列中,若不成立,則會拋出 AssertionError 。
@Test
public void isIn() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isIn(Optional.of("AssertJ"), Optional.of("155"));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isIn(Optional.of("AssertJ"), Optional.of(155));
}
Optional[AssertJ]
Optional[155]
isNotIn
Java Unit Test AssertJ Optional 驗證是否不包含於陣列中,若不成立,則會拋出 AssertionError 。
@Test
public void isNotIn() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isNotIn(Optional.of("JUnit"), Optional.of("151"));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isNotIn(Optional.of("JUnit"), Optional.of(151));
}
Optional[AssertJ]
Optional[155]
isInstanceOf
Java Unit Test AssertJ Optional 驗證是否為指定類別實例,若不成立,則會拋出 AssertionError 。
@Test
public void isInstanceOf() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isInstanceOf(Optional.class);
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isInstanceOf(Optional.class);
}
Optional[AssertJ]
Optional[155]
isNotInstanceOf
Java Unit Test AssertJ Optional 驗證是否不為指定類別實例,若不成立,則會拋出 AssertionError 。
@Test
public void isNotInstanceOf() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isNotInstanceOf(String.class);
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isNotInstanceOf(Integer.class);
}
Optional[AssertJ]
Optional[155]
UnitTestOptionalWithAssertJTest.java
Java Unit Test AssertJ Optional 新增單元測試,驗證是否符合預期。
package org.ruoxue.spring_boot_168.test.assertj.optional;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
import static org.assertj.core.api.Assertions.anyOf;
import org.assertj.core.api.Condition;
import org.junit.jupiter.api.Test;
public class UnitTestOptionalWithAssertJTest {
@Test
public void is() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
Condition<Optional<String>> isNotEmpty = new Condition<Optional<String>>(o -> !o.get().isEmpty(), "isEmpty");
Condition<Optional<String>> lengthGreaterThan = new Condition<Optional<String>>(o -> o.get().length() > 2, "lengthGreaterThan");
assertThat(value).is(anyOf(isNotEmpty, lengthGreaterThan));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
Condition<Optional<Integer>> greaterThan = new Condition<Optional<Integer>>(o -> o.get() > 0, "greaterThan");
Condition<Optional<Integer>> lessThan = new Condition<Optional<Integer>>(o -> o.get() < 160, "lessThan");
assertThat(intValue).is(anyOf(greaterThan, lessThan));
}
@Test
public void isNot() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
Condition<Optional<String>> isEmpty = new Condition<Optional<String>>(o -> o.get().isEmpty(), "isEmpty");
Condition<Optional<String>> lengthLessThan = new Condition<Optional<String>>(o -> o.get().length() < 2, "lengthLessThan");
assertThat(value).isNot(anyOf(isEmpty, lengthLessThan));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
Condition<Optional<Integer>> lessThan = new Condition<Optional<Integer>>(o -> o.get() < 0, "greaterThan");
Condition<Optional<Integer>> greaterThan = new Condition<Optional<Integer>>(o -> o.get() > 155, "lessThan");
assertThat(intValue).isNot(anyOf(greaterThan, lessThan));
}
@Test
public void isIn() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isIn(Optional.of("AssertJ"), Optional.of("155"));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isIn(Optional.of("AssertJ"), Optional.of(155));
}
@Test
public void isNotIn() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isNotIn(Optional.of("JUnit"), Optional.of("151"));
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isNotIn(Optional.of("JUnit"), Optional.of(151));
}
@Test
public void isInstanceOf() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isInstanceOf(Optional.class);
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isInstanceOf(Optional.class);
}
@Test
public void isNotInstanceOf() {
Optional<String> value = Optional.of("AssertJ");
System.out.println(value);
assertThat(value).isNotInstanceOf(String.class);
Optional<Integer> intValue = Optional.of(155);
System.out.println(intValue);
assertThat(intValue).isNotInstanceOf(Integer.class);
}
}
心得分享
AssertJ Optional Java Unit Test 斷言的基本方法是 assertThat 方法,提高了測試程式碼的可讀性,並且被設計為在主流 IDE 中易於使用,讓開發者將繁瑣的測試驗證過程,變為更簡單,善用 Java Unit Test AssertJ Optional 將有助於驗證效率的提升。