AssertJ LocalDateTime in Java with Examples - AssertJ 155

AssertJ LocalDateTime in Java with Examples – AssertJ 155

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

發佈留言