Testing with AssertJ LocalDateTime in Java - AssertJ 155

Testing with AssertJ LocalDateTime in Java – AssertJ 155

Testing with AssertJ LocalDateTime in Java

提供驗證日期時間條件判斷等方法,編寫的測試程式使用流暢的斷言語句,通常與 JUnit 測試一起使用, AssertJ 斷言的基本方法是 assertThat 方法,使用 Testing Java AssertJ LocalDateTime 流式斷言,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- spring_boot_168
       |               +- test
       |                   +- assertj
       |                       +- localdatetime
       |                           +- TestingAssertJLocalDateTimeTest.java   

單元測試

Java AssertJ LocalDateTime Testing 斷言日期時間的主要目的是取得日期時間以進行斷言。

isBefore

驗證日期時間是否在指定日期時間之前,若不成立,則會拋出 AssertionError 。

	@Test
	public void isBefore() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isBefore(LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isBefore(LocalDateTime.of(2023, 10, 31, 5, 7, 7));
	}
2023-10-31T05:06:07

isBeforeOrEqualTo

Java AssertJ LocalDateTime Testing 驗證日期時間是否在指定日期時間之前或相等,若不成立,則會拋出 AssertionError 。

	@Test
	public void isBeforeOrEqualTo() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isBeforeOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isBeforeOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));
	}
2023-10-31T05:06:07

isAfter

Java AssertJ LocalDateTime Testing 驗證日期時間是否在指定日期時間之後,若不成立,則會拋出 AssertionError 。

	@Test
	public void isAfter() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isAfter(LocalDateTime.of(2023, 10, 31, 5, 6, 2));
		assertThat(value).isAfter(LocalDateTime.of(2023, 10, 31, 5, 5, 7));
	}
2023-10-31T05:06:07

isAfterOrEqualTo

Java AssertJ LocalDateTime Testing 驗證日期時間是否在指定日期時間之後或相等,若不成立,則會拋出 AssertionError 。

	@Test
	public void isAfterOrEqualTo() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isAfterOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 2));
		assertThat(value).isAfterOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));
	}
2023-10-31T05:06:07

isBetween

Java AssertJ LocalDateTime Testing 驗證日期時間是否指定日期時間之間,包含起始值跟結束值,若不成立,則會拋出 AssertionError 。

	@Test
	public void isBetween() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 2), LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 7), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
	}
2023-10-31T05:06:07

isStrictlyBetween

Java AssertJ LocalDateTime Testing 驗證日期時間是否指定日期時間之間,不包含起始值跟結束值,若不成立,則會拋出 AssertionError 。

	@Test
	public void isStrictlyBetween() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isStrictlyBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 2), LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isStrictlyBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 6), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
	}	
2023-10-31T05:06:07

usingDefaultComparator

Java Testing AssertJ LocalDateTime 使用預設比較器,驗證日期時間是否符合條件判斷,若不成立,則會拋出 AssertionError 。

	@Test
	public void usingDefaultComparator() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).usingDefaultComparator().isEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));

		value = LocalDateTime.parse("2023-10-31T05:06:07");
		assertThat(value).usingDefaultComparator().isEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));
	}
2023-10-31T05:06:07

usingComparator

Java Testing AssertJ LocalDateTime 使用自定義比較器,驗證日期時間是否符合條件判斷,若不成立,則會拋出 AssertionError 。

	@Test
	public void usingComparator() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		Comparator<LocalDateTime> ignoreTime = (l1, l2) -> l1.toLocalDate().compareTo(l2.toLocalDate());
		assertThat(value).usingComparator(ignoreTime).isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));

		value = LocalDateTime.parse("2023-10-31T05:06:07");
		assertThat(value).usingComparator(ignoreTime).isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));
	}
2023-10-31T05:06:07

usingComparatorWithDescription

Java Testing AssertJ LocalDateTime 使用自定義比較器及描述,驗證日期時間是否符合條件判斷,顯示自定義訊息。

	@Test
	public void usingComparatorWithDescription() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		Comparator<LocalDateTime> ignoreTime = (l1, l2) -> l1.toLocalDate().compareTo(l2.toLocalDate());
		assertThat(value).usingComparator(ignoreTime, "ignoreTime")
				.isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));

		value = LocalDateTime.parse("2023-10-31T05:06:07");
		assertThat(value).usingComparator(ignoreTime, "ignoreTime")
				.isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));
	}
2023-10-31T05:06:07

TestingAssertJLocalDateTimeTest.java

Java Testing AssertJ LocalDateTime 新增單元測試,驗證是否符合預期。

package org.ruoxue.spring_boot_168.test.assertj.localdatetime;

import static org.assertj.core.api.Assertions.assertThat;
import java.time.LocalDateTime;
import java.util.Comparator;

import org.junit.jupiter.api.Test;

public class TestingAssertJLocalDateTimeTest {

	@Test
	public void isBefore() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isBefore(LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isBefore(LocalDateTime.of(2023, 10, 31, 5, 7, 7));
	}

	@Test
	public void isBeforeOrEqualTo() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isBeforeOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isBeforeOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));
	}

	@Test
	public void isAfter() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isAfter(LocalDateTime.of(2023, 10, 31, 5, 6, 2));
		assertThat(value).isAfter(LocalDateTime.of(2023, 10, 31, 5, 5, 7));
	}

	@Test
	public void isAfterOrEqualTo() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isAfterOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 2));
		assertThat(value).isAfterOrEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));
	}

	@Test
	public void isBetween() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 2), LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 7), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
	}
	
	@Test
	public void isStrictlyBetween() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).isStrictlyBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 2), LocalDateTime.of(2023, 10, 31, 5, 6, 12));
		assertThat(value).isStrictlyBetween(LocalDateTime.of(2023, 10, 31, 5, 6, 6), LocalDateTime.of(2023, 10, 31, 6, 6, 7));
	}	

	@Test
	public void usingDefaultComparator() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		assertThat(value).usingDefaultComparator().isEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));

		value = LocalDateTime.parse("2023-10-31T05:06:07");
		assertThat(value).usingDefaultComparator().isEqualTo(LocalDateTime.of(2023, 10, 31, 5, 6, 7));
	}

	@Test
	public void usingComparator() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		Comparator<LocalDateTime> ignoreTime = (l1, l2) -> l1.toLocalDate().compareTo(l2.toLocalDate());
		assertThat(value).usingComparator(ignoreTime).isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));

		value = LocalDateTime.parse("2023-10-31T05:06:07");
		assertThat(value).usingComparator(ignoreTime).isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));
	}

	@Test
	public void usingComparatorWithDescription() {
		LocalDateTime value = LocalDateTime.of(2023, 10, 31, 5, 6, 7);
		System.out.println(value);
		Comparator<LocalDateTime> ignoreTime = (l1, l2) -> l1.toLocalDate().compareTo(l2.toLocalDate());
		assertThat(value).usingComparator(ignoreTime, "ignoreTime")
				.isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));

		value = LocalDateTime.parse("2023-10-31T05:06:07");
		assertThat(value).usingComparator(ignoreTime, "ignoreTime")
				.isEqualTo(LocalDateTime.of(2023, 10, 31, 0, 0, 0));
	}
}

心得分享

AssertJ LocalDateTime Java Testing 除了提供流式判斷,還針對 LocalDateTime 做特殊判斷,在許多測試驗證的場景,讓開發者使用更流暢的驗證,不需要再寫迴圈,善用 Java Testing AssertJ LocalDateTime 將有助於驗證效率的提升。

發佈留言