クラス ReflectionTestUtils
ReflectionTestUtils
は、単体および統合テストのシナリオで使用するためのリフレクションベースのユーティリティメソッドのコレクションです。 例: public
以外のフィールドを設定したり、public
以外の setter メソッドを呼び出したり、public
以外の構成またはライフサイクルコールバックメソッドを呼び出したりすると、次のようなコードをテストできると便利な場合があります。
- ドメインエンティティのプロパティの
public
setter メソッドとは対照的に、private
またはprotected
フィールドアクセスの使用を許可する JPA や Hibernate などの ORM フレームワーク。 private
またはprotected
フィールド、setter メソッド、構成メソッドに依存性注入を提供する@Autowired
、@Inject
EE、@Resource
EE などのアノテーションに対する Spring のサポート。- ライフサイクルコールバックメソッドに対する
@PostConstruct
EE や@PreDestroy
EE などのアノテーションの使用。
さらに、このクラスのいくつかのメソッドは、static
フィールドと static
メソッドのサポートを提供します。— たとえば、setField(Class, String, Object)
、getField(Class, String)
、invokeMethod(Class, String, Object...)
、invokeMethod(Object, Class, String, Object...)
など。
- 導入:
- 2.5
- 作成者:
- Sam Brannen, Juergen Hoeller
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明invokeGetterMethod
(ObjectSE target, StringSE name) 指定されたvalue
を使用して、指定されたターゲットオブジェクトで指定されたname
を使用して getter メソッドを呼び出します。static <T> @Nullable T
invokeMethod
(@Nullable ObjectSE targetObject, @Nullable ClassSE<?> targetClass, StringSE name, ObjectSE... args) 指定された引数を使用して、指定されたtargetObject
/targetClass
で指定されたname
を使用してメソッドを呼び出します。static <T> @Nullable T
invokeMethod
(ClassSE<?> targetClass, StringSE name, ObjectSE... args) 指定された引数を使用して、指定されたターゲットクラスで指定されたname
を使用して静的メソッドを呼び出します。static <T> @Nullable T
invokeMethod
(ObjectSE target, StringSE name, ObjectSE... args) 指定された引数を使用して、指定されたターゲットオブジェクトで指定されたname
を使用してメソッドを呼び出します。static void
invokeSetterMethod
(ObjectSE target, StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type) 指定されたvalue
を使用して、指定されたターゲットオブジェクトで指定されたname
を使用して setter メソッドを呼び出します。static void
invokeSetterMethod
(ObjectSE target, StringSE name, ObjectSE value) 指定されたvalue
を使用して、指定されたターゲットオブジェクトで指定されたname
を使用して setter メソッドを呼び出します。static void
setField
(@Nullable ObjectSE targetObject, @Nullable ClassSE<?> targetClass, @Nullable StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type) static void
setField
(ClassSE<?> targetClass, @Nullable StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type) static void
static void
setField
(ObjectSE targetObject, @Nullable StringSE name, @Nullable ObjectSE value, @Nullable ClassSE<?> type) static void
コンストラクターの詳細
ReflectionTestUtils
public ReflectionTestUtils()
メソッドの詳細
setField
提供された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
提供された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
フィールドにアクセスできるようにする試みが行われるため、protected
、private
、パッケージプライベートフィールドを設定できます。このメソッドは、
static final
フィールドの設定をサポートしていません。- パラメーター:
targetObject
- フィールドを設定する対象オブジェクト。フィールドが静的な場合、null
になる場合がありますtargetClass
- フィールドを設定するターゲットクラス。フィールドがインスタンスフィールドの場合、null
の場合がありますname
- 設定するフィールドの名前。type
が指定されている場合、null
になりますvalue
- 設定する値type
- 設定するフィールドの型。name
が指定されている場合、null
になります- 導入:
- 4.2
- 関連事項:
getField
提供されたtargetObject
から、指定されたname
を持つフィールドSEの値を取得します。このメソッドは
getField(Object, Class, String)
に委譲し、targetClass
引数にnull
を提供します。- パラメーター:
targetObject
- フィールドを取得するターゲットオブジェクト。非null
name
- 取得するフィールドの名前。非null
- 戻り値:
- フィールドの現在の値
- 関連事項:
getField
提供されたtargetClass
から、指定されたname
の静的フィールドSEの値を取得します。このメソッドは
getField(Object, Class, String)
に委譲し、targetObject
引数にnull
を提供します。- パラメーター:
targetClass
- 静的フィールドを取得するターゲットクラス。非null
name
- 取得するフィールドの名前。非null
- 戻り値:
- フィールドの現在の値
- 導入:
- 4.2
- 関連事項:
getField
public static @Nullable ObjectSE getField(@Nullable ObjectSE targetObject, @Nullable ClassSE<?> targetClass, StringSE name) 提供されたtargetObject
/targetClass
から指定されたname
を持つフィールドSEの値を取得します。供給
targetObject
がプロキシである場合、なり開封フィールドは、プロキシの最終的なゴールから取得されることを可能にします。このメソッドは、目的のフィールドを検索するためにクラス階層をトラバースします。さらに、
非 public
フィールドにアクセスできるようにする試みが行われるため、protected
、private
、パッケージプライベートフィールドを取得できます。- パラメーター:
targetObject
- フィールドを取得するターゲットオブジェクト。フィールドが静的な場合、null
になる場合がありますtargetClass
- フィールドを取得するターゲットクラス。フィールドがインスタンスフィールドの場合、null
の場合がありますname
- 取得するフィールドの名前。非null
- 戻り値:
- フィールドの現在の値
- 導入:
- 4.2
- 関連事項:
invokeSetterMethod
指定されたvalue
を使用して、指定されたターゲットオブジェクトで指定されたname
を使用して setter メソッドを呼び出します。このメソッドは、パラメーター型として
null
を指定して、invokeSetterMethod(Object, String, Object, Class)
に委譲します。- パラメーター:
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
以外のメソッドにアクセスできるようにする試みが行われるため、protected
、private
、パッケージプライベート setter メソッドを呼び出すことができます。このメソッドは、JavaBean スタイルのプロパティ名もサポートします。例: ターゲットオブジェクトに
name
プロパティを設定する場合は、メソッド名として"name"
または"setName"
のいずれかを渡すことができます。Spring Framework 6.2 では、指定されたターゲットオブジェクトが setter メソッドをインターセプトしない CGLIB プロキシである場合、プロキシはラップ解除され、プロキシの最終ターゲットで setter メソッドを直接呼び出すことができるようになります。
- パラメーター:
target
- 指定された setter メソッドを呼び出すターゲットオブジェクトname
- 呼び出す setter メソッドの名前または対応するプロパティ名value
- setter メソッドに提供する値type
- setter メソッドによって宣言された仮パラメーター型 (任意の型を示すためにnull
が使用される場合がある)- 関連事項:
invokeGetterMethod
指定されたvalue
を使用して、指定されたターゲットオブジェクトで指定されたname
を使用して getter メソッドを呼び出します。このメソッドは、目的のメソッドを検索するためにクラス階層をトラバースします。さらに、
public
以外のメソッドにアクセスできるようにする試みが行われるため、protected
、private
、パッケージプライベート getter メソッドを呼び出すことができます。このメソッドは、JavaBean スタイルのプロパティ名もサポートします。例: ターゲットオブジェクトの
name
プロパティを取得する場合は、メソッド名として"name"
または"getName"
のいずれかを渡すことができます。Spring Framework 6.2 では、指定されたターゲットオブジェクトが getter メソッドをインターセプトしない CGLIB プロキシである場合、プロキシはラップ解除され、プロキシの最終ターゲットで getter メソッドを直接呼び出すことができるようになります。
- パラメーター:
target
- 指定された getter メソッドを呼び出すターゲットオブジェクトname
- 呼び出す getter メソッドの名前または対応するプロパティ名- 戻り値:
- 呼び出しから返された値
- 関連事項:
invokeMethod
指定された引数を使用して、指定されたターゲットオブジェクトで指定されたname
を使用してメソッドを呼び出します。このメソッドは
invokeMethod(Object, Class, String, Object...)
に委譲し、targetClass
引数にnull
を提供します。- パラメーター:
target
- 指定されたメソッドを呼び出す対象オブジェクトname
- 呼び出すメソッドの名前args
- メソッドに提供する引数- 戻り値:
- 呼び出し結果(ある場合)
- 関連事項:
invokeMethod
指定された引数を使用して、指定されたターゲットクラスで指定されたname
を使用して静的メソッドを呼び出します。このメソッドは
invokeMethod(Object, Class, String, Object...)
に委譲し、targetObject
引数にnull
を提供します。- パラメーター:
targetClass
- 指定されたメソッドを呼び出す対象クラスname
- 呼び出すメソッドの名前args
- メソッドに提供する引数- 戻り値:
- 呼び出し結果(ある場合)
- 導入:
- 5.2
- 関連事項:
invokeMethod
public static <T> @Nullable T invokeMethod(@Nullable ObjectSE targetObject, @Nullable ClassSE<?> targetClass, StringSE name, ObjectSE... args) 指定された引数を使用して、指定されたtargetObject
/targetClass
で指定されたname
を使用してメソッドを呼び出します。このメソッドは、目的のメソッドを検索するためにクラス階層をトラバースします。さらに、
非 public
メソッドにアクセスできるようにする試みが行われるため、protected
、private
、パッケージプライベートメソッドを呼び出すことができます。Spring Framework 6.2 以降、指定されたターゲットオブジェクトがメソッドをインターセプトしない CGLIB プロキシである場合、プロキシはラップ解除され、プロキシの最終ターゲットでメソッドを直接呼び出すことができるようになります。
- パラメーター:
targetObject
- メソッドを呼び出す対象オブジェクト。メソッドが静的な場合、null
targetClass
- メソッドを呼び出す対象クラス。メソッドがインスタンスメソッドの場合、null
name
- 呼び出すメソッドの名前args
- メソッドに提供する引数- 戻り値:
- 呼び出し結果(ある場合)
- 導入:
- 5.2
- 関連事項: