Table of Contents
ToggleAssertJ LocalDateTime in Java with Examples
為用 Java 編寫的測試程式提供了流暢的斷言語句,這些斷言語句通常與 JUnit 測試一起使用, AssertJ 斷言的基本方法是 assertThat 方法,驗證 LocalDateTime 年、月、日是否符合條件等等, AssertJ LocalDateTime in Java 本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- spring_boot_168
| +- test
| +- assertj
| +- localdatetime
| +- AssertJLocalDateTimeWithExamplesTest.java
單元測試
AssertJ LocalDateTime Java 斷言日期時間的主要目的是取得日期時間以進行斷言。
has
驗證是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void has() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
Condition<LocalDateTime> year = new Condition<LocalDateTime>(l -> l.getYear() > 2022, "year");
assertThat(value).has(year);
value = null;
System.out.println(value);
Condition<LocalDateTime> nullz = new Condition<LocalDateTime>(l -> l == null, "null");
assertThat(value).has(nullz);
}
2023-10-31T05:06:07
null
hasYear
AssertJ LocalDateTime Java 驗證年是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasYear() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasYear(2023);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasYear(2000);
}
2023-10-31T05:06:07
2000-01-01T00:00
hasMonth
AssertJ LocalDateTime Java 驗證月是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasMonth() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasMonth(Month.OCTOBER);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasMonth(Month.JANUARY);
}
2023-10-31T05:06:07
2000-01-01T00:00
hasMonthValue
AssertJ LocalDateTime Java 驗證月是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasMonthValue() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasMonthValue(10);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasMonthValue(1);
}
2023-10-31T05:06:07
2000-01-01T00:00
hasDayOfMonth
AssertJ LocalDateTime Java 驗證日是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasDayOfMonth() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasDayOfMonth(31);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasDayOfMonth(1);
}
2023-10-31T05:06:07
2000-01-01T00:00
hasHour
AssertJ LocalDateTime Java 驗證時是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasHour() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasHour(5);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasHour(0);
}
2023-10-31T05:06:07
2000-01-01T00:00
hasMinute
Java AssertJ LocalDateTime 驗證分是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasMinute() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasMinute(6);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasMinute(0);
}
2023-10-31T05:06:07
2000-01-01T00:00
hasSecond
Java AssertJ LocalDateTime 驗證秒是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasSecond() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasSecond(7);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasSecond(0);
}
2023-10-31T05:06:07
2000-01-01T00:00
hasNano
Java AssertJ LocalDateTime 驗證奈秒是否符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void hasNano() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7, 111);
System.out.println(value);
assertThat(value).hasNano(111);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0, 999);
System.out.println(value);
assertThat(value).hasNano(999);
}
2023-10-31T05:06:07.000000111
2000-01-01T00:00:00.000000999
hasToString
Java AssertJ LocalDateTime 驗證 toString 是否相等,若不成立,則會拋出 AssertionError 。
@Test
public void hasToString() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasToString("2023-10-31T05:06:07");
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasToString("2000-01-01T00:00");
}
2023-10-31T05:06:07
2000-01-01T00:00
doesNotHave
Java AssertJ LocalDateTime 驗證是否不符合條件,若不成立,則會拋出 AssertionError 。
@Test
public void doesNotHave() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
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
AssertJLocalDateTimeWithExamplesTest.java
Java AssertJ LocalDateTime 新增單元測試,驗證是否符合預期。
package org.ruoxue.spring_boot_168.test.assertj.localdatetime;
import static org.assertj.core.api.Assertions.*;
import java.time.LocalDateTime;
import java.time.Month;
import org.assertj.core.api.Condition;
import org.junit.jupiter.api.Test;
public class AssertJLocalDateTimeWithExamplesTest {
@Test
public void has() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
Condition<LocalDateTime> year = new Condition<LocalDateTime>(l -> l.getYear() > 2022, "year");
assertThat(value).has(year);
value = null;
System.out.println(value);
Condition<LocalDateTime> nullz = new Condition<LocalDateTime>(l -> l == null, "null");
assertThat(value).has(nullz);
}
@Test
public void hasYear() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasYear(2023);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasYear(2000);
}
@Test
public void hasMonth() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasMonth(Month.OCTOBER);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasMonth(Month.JANUARY);
}
@Test
public void hasMonthValue() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasMonthValue(10);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasMonthValue(1);
}
@Test
public void hasDayOfMonth() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasDayOfMonth(31);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasDayOfMonth(1);
}
@Test
public void hasHour() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasHour(5);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasHour(0);
}
@Test
public void hasMinute() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasMinute(6);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasMinute(0);
}
@Test
public void hasSecond() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasSecond(7);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasSecond(0);
}
@Test
public void hasNano() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7, 111);
System.out.println(value);
assertThat(value).hasNano(111);
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0, 999);
System.out.println(value);
assertThat(value).hasNano(999);
}
@Test
public void hasToString() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
System.out.println(value);
assertThat(value).hasToString("2023-10-31T05:06:07");
value = LocalDateTime.of(2000, 01, 01, 0, 0, 0);
System.out.println(value);
assertThat(value).hasToString("2000-01-01T00:00");
}
@Test
public void doesNotHave() {
LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
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);
}
}
心得分享
Java AssertJ LocalDateTime Example 提高了測試程式碼的可讀性,基本方法是 assertThat 方法,善用 Java AssertJ LocalDateTime 將有助於驗證效率的提升。