AssertJ Class Assertions - AssertJ 155

AssertJ Class Assertions – AssertJ 155

AssertJ Class Assertions

提供驗證符合條件等方法, AssertJ 是一個 Java 庫,提供了一組豐富的斷言和真正有用的錯誤訊息,類似的流暢或鍊式寫法,語法跟自然語言相近,對於編寫測試時力求容易閱讀及維護這之上提供了相當大的改進, Asserting Class with AssertJ 使用流式斷言,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- spring_boot_168
       |               +- test
       |                   +- assertj
       |                       +- clazz
       |                           +- AssertJClassAssertionsTest.java   

單元測試

Class Elements with AssertJ 斷言類別的主要目的是取得類別以進行斷言。

isAbstract

驗證是否抽象,若不成立,則會拋出 AssertionError 。

	@Test
	public void isAbstract() {
		Class<?> clazz = CharSequence.class;
		System.out.println(clazz);
		assertThat(clazz).isAbstract();

		Class<?> clazz2 = Number.class;
		System.out.println(clazz2);
		assertThat(clazz2).isAbstract();
	}
interface java.lang.CharSequence
class java.lang.Number

isInterface

Class Elements with AssertJ 驗證是否介面,若不成立,則會拋出 AssertionError 。

	@Test
	public void isInterface() {
		Class<?> clazz = Predicate.class;
		System.out.println(clazz);
		assertThat(clazz).isInterface();

		Class<?> clazz2 = BiPredicate.class;
		System.out.println(clazz2);
		assertThat(clazz2).isInterface();
	}
interface java.util.function.Predicate
interface java.util.function.BiPredicate

isNotInterface

Class Elements with AssertJ 驗證是否非介面,若不成立,則會拋出 AssertionError 。

	@Test
	public void isNotInterface() {
		Class<?> clazz = String.class;
		System.out.println(clazz);
		assertThat(clazz).isNotInterface();

		Class<?> clazz2 = int.class;
		System.out.println(clazz2);
		assertThat(clazz2).isNotInterface();
	}
class java.lang.String
int

isFinal

Class Elements with AssertJ 驗證是否 final 類別,若不成立,則會拋出 AssertionError 。

	@Test
	public void isFinal() {
		Class<?> clazz = Optional.class;
		System.out.println(clazz);
		assertThat(clazz).isFinal();

		Class<?> clazz2 = LocalDateTime.class;
		System.out.println(clazz2);
		assertThat(clazz2).isFinal();
	}
class java.util.Optional
class java.time.LocalDateTime

isNotFinal

Testing Java Class with AssertJ 驗證是否非 final 類別,若不成立,則會拋出 AssertionError 。

	@Test
	public void isNotFinal() {
		Class<?> clazz = Object.class;
		System.out.println(clazz);
		assertThat(clazz).isNotFinal();

		Class<?> clazz2 = Thread.class;
		System.out.println(clazz2);
		assertThat(clazz2).isNotFinal();
	}
class java.lang.Object
class java.lang.Thread

isAnnotation

Testing Java Class with AssertJ 驗證是否 Annotation,若不成立,則會拋出 AssertionError 。

	@Test
	public void isAnnotation() {
		Class<?> clazz = FunctionalInterface.class;
		System.out.println(clazz);
		assertThat(clazz).isAnnotation();

		Class<?> clazz2 = Retention.class;
		System.out.println(clazz2);
		assertThat(clazz2).isAnnotation();
	}
interface java.lang.FunctionalInterface
interface java.lang.annotation.Retention

isNotAnnotation

Testing Java Class with AssertJ 驗證是否非 Annotation ,若不成立,則會拋出 AssertionError 。

	@Test
	public void isNotAnnotation() {
		Class<?> clazz = Collector.class;
		System.out.println(clazz);
		assertThat(clazz).isNotAnnotation();

		Class<?> clazz2 = Stream.class;
		System.out.println(clazz2);
		assertThat(clazz2).isNotAnnotation();
	}
interface java.util.stream.Collector
interface java.util.stream.Stream

AssertJClassAssertionsTest.java

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

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

import static org.assertj.core.api.Assertions.*;

import java.lang.annotation.Retention;
import java.time.LocalDateTime;
import java.util.Optional;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
import java.util.stream.Collector;
import java.util.stream.Stream;

import org.junit.jupiter.api.Test;

public class AssertJClassAssertionsTest {

	@Test
	public void isAbstract() {
		Class<?> clazz = CharSequence.class;
		System.out.println(clazz);
		assertThat(clazz).isAbstract();

		Class<?> clazz2 = Number.class;
		System.out.println(clazz2);
		assertThat(clazz2).isAbstract();
	}

	@Test
	public void isInterface() {
		Class<?> clazz = Predicate.class;
		System.out.println(clazz);
		assertThat(clazz).isInterface();

		Class<?> clazz2 = BiPredicate.class;
		System.out.println(clazz2);
		assertThat(clazz2).isInterface();
	}

	@Test
	public void isNotInterface() {
		Class<?> clazz = String.class;
		System.out.println(clazz);
		assertThat(clazz).isNotInterface();

		Class<?> clazz2 = int.class;
		System.out.println(clazz2);
		assertThat(clazz2).isNotInterface();
	}

	@Test
	public void isFinal() {
		Class<?> clazz = Optional.class;
		System.out.println(clazz);
		assertThat(clazz).isFinal();

		Class<?> clazz2 = LocalDateTime.class;
		System.out.println(clazz2);
		assertThat(clazz2).isFinal();
	}

	@Test
	public void isNotFinal() {
		Class<?> clazz = Object.class;
		System.out.println(clazz);
		assertThat(clazz).isNotFinal();

		Class<?> clazz2 = Thread.class;
		System.out.println(clazz2);
		assertThat(clazz2).isNotFinal();
	}

	@Test
	public void isAnnotation() {
		Class<?> clazz = FunctionalInterface.class;
		System.out.println(clazz);
		assertThat(clazz).isAnnotation();

		Class<?> clazz2 = Retention.class;
		System.out.println(clazz2);
		assertThat(clazz2).isAnnotation();
	}

	@Test
	public void isNotAnnotation() {
		Class<?> clazz = Collector.class;
		System.out.println(clazz);
		assertThat(clazz).isNotAnnotation();

		Class<?> clazz2 = Stream.class;
		System.out.println(clazz2);
		assertThat(clazz2).isNotAnnotation();
	}
}

心得分享

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

發佈留言