Table of Contents
ToggleUnit Test LocalDateTime with AssertJ
提供了一組豐富的斷言和真正有用的錯誤訊息,提高了測試程式碼的可讀性,通常與 JUnit 測試一起使用, Unit Test Java AssertJ LocalDateTime 流式斷言,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- spring_boot_168
| +- test
| +- assertj
| +- localdatetime
| +- UnitTestLocalDateTimeWithAssertJTest.java
單元測試
Java AssertJ LocalDateTime Unit Test 斷言日期時間的主要目的是取得日期時間以進行斷言。
is
驗證是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void is() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
Condition<LocalDateTime> year = new Condition<LocalDateTime>(l -> l.getYear() > 2022, "year");
System.out.println(value);
assertThat(value).is(year);
value = null;
System.out.println(value);
Condition<LocalDateTime> nullz = new Condition<LocalDateTime>(l -> l == null, "null");
assertThat(value).is(nullz);
}
2023-10-31T05:06:07
null
isNot
Java AssertJ LocalDateTime Unit Test 驗證是否不符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void isNot() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
Condition<LocalDateTime> year = new Condition<LocalDateTime>(l -> l.getYear() > 2023, "year");
assertThat(value).doesNotHave(year);
value = null;
System.out.println(value);
Condition<LocalDateTime> nullz = new Condition<LocalDateTime>(l -> l != null, "null");
assertThat(value).doesNotHave(nullz);
}
2023-10-31T05:06:07
null
isIn
Java AssertJ LocalDateTime Unit Test 驗證是否包含於陣列中,若不成立,則會拋出 AssertionError 。
@Test
public void isIn() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isIn(LocalDateTime.parse("2023-10-31T05:06:07"), LocalDateTime.parse("2023-10-31T06:06:07"));
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isIn(LocalDateTime.of(2023, 10, 31, 5, 6, 7), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
}
2023-10-31T05:06:07
2023-10-31T05:06:07
isNotIn
Java AssertJ LocalDateTime Unit Test 驗證是否不包含於陣列中,若不成立,則會拋出 AssertionError 。
@Test
public void isNotIn() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isNotIn(LocalDateTime.parse("2023-10-31T04:06:07"),
LocalDateTime.parse("2023-10-31T06:06:07"));
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isNotIn(LocalDateTime.of(2023, 10, 31, 4, 6, 7), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
}
2023-10-31T05:06:07
2023-10-31T05:06:07
isInstanceOf
Java AssertJ LocalDateTime Unit Test 驗證是否為指定類別實例,若不成立,則會拋出 AssertionError 。
@Test
public void isInstanceOf() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isInstanceOf(LocalDateTime.class);
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isInstanceOf(LocalDateTime.class);
}
2023-10-31T05:06:07
2023-10-31T05:06:07
isNotInstanceOf
Java AssertJ LocalDateTime Unit Test 驗證是否不為指定類別實例,若不成立,則會拋出 AssertionError 。
@Test
public void isNotInstanceOf() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isNotInstanceOf(LocalDate.class);
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isNotInstanceOf(LocalDate.class);
}
2023-10-31T05:06:07
2023-10-31T05:06:07
UnitTestLocalDateTimeWithAssertJTest.java
Java Unit Test AssertJ LocalDateTime 新增單元測試,驗證是否符合預期。
package org.ruoxue.spring_boot_168.test.assertj.localdatetime;
import static org.assertj.core.api.Assertions.assertThat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import org.assertj.core.api.Condition;
import org.junit.jupiter.api.Test;
public class UnitTestLocalDateTimeWithAssertJTest {
@Test
public void is() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
Condition<LocalDateTime> year = new Condition<LocalDateTime>(l -> l.getYear() > 2022, "year");
assertThat(value).is(year);
value = null;
System.out.println(value);
Condition<LocalDateTime> nullz = new Condition<LocalDateTime>(l -> l == null, "null");
assertThat(value).is(nullz);
}
@Test
public void isNot() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
Condition<LocalDateTime> year = new Condition<LocalDateTime>(l -> l.getYear() > 2023, "year");
assertThat(value).doesNotHave(year);
value = null;
System.out.println(value);
Condition<LocalDateTime> nullz = new Condition<LocalDateTime>(l -> l != null, "null");
assertThat(value).doesNotHave(nullz);
}
@Test
public void isIn() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isIn(LocalDateTime.parse("2023-10-31T05:06:07"), LocalDateTime.parse("2023-10-31T06:06:07"));
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isIn(LocalDateTime.of(2023, 10, 31, 5, 6, 7), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
}
@Test
public void isNotIn() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isNotIn(LocalDateTime.parse("2023-10-31T04:06:07"),
LocalDateTime.parse("2023-10-31T06:06:07"));
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isNotIn(LocalDateTime.of(2023, 10, 31, 4, 6, 7), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
}
@Test
public void isInstanceOf() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isInstanceOf(LocalDateTime.class);
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isInstanceOf(LocalDateTime.class);
}
@Test
public void isNotInstanceOf() {
LocalDateTime value = LocalDateTime.parse("2023-10-31T05:06:07");
System.out.println(value);
assertThat(value).isNotInstanceOf(LocalDate.class);
value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).isNotInstanceOf(LocalDate.class);
}
}
心得分享
AssertJ LocalDateTime Java Unit Test 斷言的基本方法是 assertThat 方法,提高了測試程式碼的可讀性,並且被設計為在主流 IDE 中易於使用,讓開發者將繁瑣的測試驗證過程,變為更簡單,善用 Java Unit Test AssertJ LocalDateTime 將有助於驗證效率的提升。