クラス ReflectionTestUtils

java.lang.ObjectSE
org.springframework.test.util.ReflectionTestUtils

public abstract class ReflectionTestUtils extends ObjectSE
ReflectionTestUtils は、単体および統合テストのシナリオで使用するためのリフレクションベースのユーティリティメソッドのコレクションです。

例: public 以外のフィールドを設定したり、public 以外の setter メソッドを呼び出したり、public 以外の構成またはライフサイクルコールバックメソッドを呼び出したりすると、次のようなコードをテストできると便利場合があります

  • ドメインエンティティのプロパティの public setter メソッドとは対照的に、private または protected フィールドアクセスの使用を許可する JPA や Hibernate などの ORM フレームワーク。
  • private または protected フィールド、setter メソッド、構成メソッドに依存性注入を提供する @Autowired@InjectEE@ResourceEE などのアノテーションに対する Spring のサポート。
  • ライフサイクルコールバックメソッドに対する @PostConstructEE@PreDestroyEE などのアノテーションの使用。

さらに、このクラスのいくつかのメソッドは、static フィールドと static メソッドのサポートを提供します。— たとえば、setField(Class, String, Object)getField(Class, String)invokeMethod(Class, String, Object...)invokeMethod(Object, Class, String, Object...) など。

導入:
2.5
作成者:
Sam Brannen, Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • ReflectionTestUtils

      public ReflectionTestUtils()
  • メソッドの詳細

    • setField

      public static void setField(ObjectSE targetObject, StringSE name, @Nullable ObjectSE value)
      提供された targetObject 上の指定された name のフィールドを、提供された value に設定SEします。

      このメソッドは setField(Object, String, Object, Class) に委譲し、type 引数に null を提供します。

      パラメーター:
      targetObject - フィールドを設定する対象オブジェクト。非 null
      name - 設定するフィールドの名前。非 null
      value - 設定する値
    • setField

      public static void setField(ObjectSE targetObject, @Nullable StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type)
      提供された targetObject 上の指定された name/type のフィールドSEを提供された value に設定します。

      このメソッドは setField(Object, Class, String, Object, Class) に委譲し、targetClass 引数に null を提供します。

      パラメーター:
      targetObject - フィールドを設定する対象オブジェクト。非 null
      name - 設定するフィールドの名前。type が指定されている場合、null になります
      value - 設定する値
      type - 設定するフィールドの型。name が指定されている場合、null になります
    • setField

      public static void setField(ClassSE<?> targetClass, StringSE name, @Nullable ObjectSE value)
      提供された targetClass 上の指定された name の静的フィールドを提供された value に設定SEします。

      このメソッドは setField(Object, Class, String, Object, Class) に委譲し、targetObject および type 引数に null を提供します。

      このメソッドは、static final フィールドの設定をサポートしていません。

      パラメーター:
      targetClass - 静的フィールドを設定するターゲットクラス。非 null
      name - 設定するフィールドの名前。非 null
      value - 設定する値
      導入:
      4.2
    • setField

      public static void setField(ClassSE<?> targetClass, @Nullable StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type)
      提供された targetClass 上の指定された name/type の静的フィールドSEを提供された value に設定します。

      このメソッドは setField(Object, Class, String, Object, Class) に委譲し、targetObject 引数に null を提供します。

      このメソッドは、static final フィールドの設定をサポートしていません。

      パラメーター:
      targetClass - 静的フィールドを設定するターゲットクラス。非 null
      name - 設定するフィールドの名前。type が指定されている場合、null になります
      value - 設定する値
      type - 設定するフィールドの型。name が指定されている場合、null になります
      導入:
      4.2
    • setField

      public static void setField(@Nullable ObjectSE targetObject, @Nullable ClassSE<?> targetClass, @Nullable StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type)
      提供された targetObject/targetClass 上の指定された name/type のフィールドSEを提供された value に設定します。

      供給 targetObject がプロキシがある場合、次のようになります開封されたフィールドは、プロキシの究極のゴールに設定することができます。

      このメソッドは、目的のフィールドを検索するためにクラス階層をトラバースします。さらに、非 public フィールドにアクセスできるようにする試みが行われるため、protectedprivateパッケージプライベートフィールドを設定できます。

      このメソッドは、static final フィールドの設定をサポートしていません。

      パラメーター:
      targetObject - フィールドを設定する対象オブジェクト。フィールドが静的な場合、null になる場合があります
      targetClass - フィールドを設定するターゲットクラス。フィールドがインスタンスフィールドの場合、null の場合があります
      name - 設定するフィールドの名前。type が指定されている場合、null になります
      value - 設定する値
      type - 設定するフィールドの型。name が指定されている場合、null になります
      導入:
      4.2
      関連事項:
    • getField

      @Nullable public static ObjectSE getField(ObjectSE targetObject, StringSE name)
      提供された targetObject から、指定された name を持つフィールドSEの値を取得します。

      このメソッドは getField(Object, Class, String) に委譲し、targetClass 引数に null を提供します。

      パラメーター:
      targetObject - フィールドを取得するターゲットオブジェクト。非 null
      name - 取得するフィールドの名前。非 null
      戻り値:
      フィールドの現在の値
      関連事項:
    • getField

      @Nullable public static ObjectSE getField(ClassSE<?> targetClass, StringSE name)
      提供された targetClass から、指定された name の静的フィールドSEの値を取得します。

      このメソッドは getField(Object, Class, String) に委譲し、targetObject 引数に null を提供します。

      パラメーター:
      targetClass - 静的フィールドを取得するターゲットクラス。非 null
      name - 取得するフィールドの名前。非 null
      戻り値:
      フィールドの現在の値
      導入:
      4.2
      関連事項:
    • getField

      @Nullable public static ObjectSE getField(@Nullable ObjectSE targetObject, @Nullable ClassSE<?> targetClass, StringSE name)
      提供された targetObject/targetClass から指定された name を持つフィールドSEの値を取得します。

      供給 targetObject がプロキシである場合、なり開封フィールドは、プロキシの最終的なゴールから取得されることを可能にします。

      このメソッドは、目的のフィールドを検索するためにクラス階層をトラバースします。さらに、非 public フィールドにアクセスできるようにする試みが行われるため、protectedprivateパッケージプライベートフィールドを取得できます。

      パラメーター:
      targetObject - フィールドを取得するターゲットオブジェクト。フィールドが静的な場合、null になる場合があります
      targetClass - フィールドを取得するターゲットクラス。フィールドがインスタンスフィールドの場合、null の場合があります
      name - 取得するフィールドの名前。非 null
      戻り値:
      フィールドの現在の値
      導入:
      4.2
      関連事項:
    • invokeSetterMethod

      public static void invokeSetterMethod(ObjectSE target, StringSE name, ObjectSE value)
      指定された value を使用して、指定されたターゲットオブジェクトで指定された name を使用して setter メソッドを呼び出します。

      このメソッドは、目的のメソッドを検索するためにクラス階層をトラバースします。さらに、public 以外のメソッドにアクセスできるようにする試みが行われるため、protectedprivateパッケージプライベート setter メソッドを呼び出すことができます。

      さらに、このメソッドは JavaBean スタイルのプロパティ名をサポートします。例: ターゲットオブジェクトに name プロパティを設定する場合、メソッド名として "name" または "setName" のいずれかを渡すことができます。

      パラメーター:
      target - 指定された setter メソッドを呼び出すターゲットオブジェクト
      name - 呼び出す setter メソッドの名前または対応するプロパティ名
      value - setter メソッドに提供する値
      関連事項:
    • invokeSetterMethod

      public static void invokeSetterMethod(ObjectSE target, StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type)
      指定された value を使用して、指定されたターゲットオブジェクトで指定された name を使用して setter メソッドを呼び出します。

      このメソッドは、目的のメソッドを検索するためにクラス階層をトラバースします。さらに、public 以外のメソッドにアクセスできるようにする試みが行われるため、protectedprivateパッケージプライベート setter メソッドを呼び出すことができます。

      さらに、このメソッドは JavaBean スタイルのプロパティ名をサポートします。例: ターゲットオブジェクトに name プロパティを設定する場合、メソッド名として "name" または "setName" のいずれかを渡すことができます。

      パラメーター:
      target - 指定された setter メソッドを呼び出すターゲットオブジェクト
      name - 呼び出す setter メソッドの名前または対応するプロパティ名
      value - setter メソッドに提供する値
      type - setter メソッドによって宣言された仮パラメーター型
      関連事項:
    • invokeGetterMethod

      @Nullable public static ObjectSE invokeGetterMethod(ObjectSE target, StringSE name)
      指定された value を使用して、指定されたターゲットオブジェクトで指定された name を使用して getter メソッドを呼び出します。

      このメソッドは、目的のメソッドを検索するためにクラス階層をトラバースします。さらに、public 以外のメソッドにアクセスできるようにする試みが行われるため、protectedprivateパッケージプライベート getter メソッドを呼び出すことができます。

      さらに、このメソッドは JavaBean スタイルのプロパティ名をサポートします。例: ターゲットオブジェクトの name プロパティを取得する場合、メソッド名として "name" または "getName" を渡すことができます。

      パラメーター:
      target - 指定された getter メソッドを呼び出すターゲットオブジェクト
      name - 呼び出す getter メソッドの名前または対応するプロパティ名
      戻り値:
      呼び出しから返された値
      関連事項:
    • invokeMethod

      @Nullable public static <T> T invokeMethod(ObjectSE target, StringSE name, ObjectSE... args)
      指定された引数を使用して、指定されたターゲットオブジェクトで指定された name を使用してメソッドを呼び出します。

      このメソッドは invokeMethod(Object, Class, String, Object...) に委譲し、targetClass 引数に null を提供します。

      パラメーター:
      target - 指定されたメソッドを呼び出す対象オブジェクト
      name - 呼び出すメソッドの名前
      args - メソッドに提供する引数
      戻り値:
      呼び出し結果(ある場合)
      関連事項:
    • invokeMethod

      @Nullable public static <T> T invokeMethod(ClassSE<?> targetClass, StringSE name, ObjectSE... args)
      指定された引数を使用して、指定されたターゲットクラスで指定された name を使用して静的メソッドを呼び出します。

      このメソッドは invokeMethod(Object, Class, String, Object...) に委譲し、targetObject 引数に null を提供します。

      パラメーター:
      targetClass - 指定されたメソッドを呼び出す対象クラス
      name - 呼び出すメソッドの名前
      args - メソッドに提供する引数
      戻り値:
      呼び出し結果(ある場合)
      導入:
      5.2
      関連事項:
    • invokeMethod

      @Nullable public static <T> T invokeMethod(@Nullable ObjectSE targetObject, @Nullable ClassSE<?> targetClass, StringSE name, ObjectSE... args)
      指定された引数を使用して、指定された targetObject/targetClass で指定された name を使用してメソッドを呼び出します。

      このメソッドは、目的のメソッドを検索するためにクラス階層をトラバースします。さらに、非 public メソッドにアクセスできるようにする試みが行われるため、protectedprivateパッケージプライベートメソッドを呼び出すことができます。

      パラメーター:
      targetObject - メソッドを呼び出す対象オブジェクト。メソッドが静的な場合、null 
      targetClass - メソッドを呼び出す対象クラス。メソッドがインスタンスメソッドの場合、null 
      name - 呼び出すメソッドの名前
      args - メソッドに提供する引数
      戻り値:
      呼び出し結果(ある場合)
      導入:
      5.2
      関連事項: