スーパークラスで定義された保護された変数をモックできませんでした。スーパークラスで保護されたメソッドをモックできましたが、保護された変数をサブクラスにモックできませんでした。サブクラスのテストケースを書いています。それに対する解決策。返信してください。
ありがとうシャシ
Deencapsulation.setField
メソッドを使用してこれを行うことができます。例えば:
@Test public void staticVarOverride() {
MyClass myClass = new MyClass();
Deencapsulation.setField(MyClass.class, "myStatic", 2);
// Assertions, verifications go here.
}
これにより、静的変数の値がmyStatic
2 に設定されます。これは静的変数では機能しますが、静的最終変数では機能しないことに注意してください。私の知る限り、静的ファイナルをオーバーライドする方法はありません。
すべてのモッキング ツールは、メソッドのみをモックします。
JMockit には、特定のテストからアクセスできないフィールド、メソッド、およびコンストラクターへのアクセスを提供するユーティリティ メソッドもあります。mockit.Expectations
これらはとのサブクラスで直接利用できますmockit.Verifications
。mockit.Deencapsulation
同じメソッドが静的クラスでも公開されています。