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