2

スーパークラスで定義された保護された変数をモックできませんでした。スーパークラスで保護されたメソッドをモックできましたが、保護された変数をサブクラスにモックできませんでした。サブクラスのテストケースを書いています。それに対する解決策。返信してください。

ありがとうシャシ

4

2 に答える 2

4

Deencapsulation.setFieldメソッドを使用してこれを行うことができます。例えば:

@Test public void staticVarOverride() {
    MyClass myClass = new MyClass();
    Deencapsulation.setField(MyClass.class, "myStatic", 2);
    // Assertions, verifications go here.
}

これにより、静的変数の値がmyStatic2 に設定されます。これは静的変数では機能しますが、静的最終変数では機能しないことに注意してください。私の知る限り、静的ファイナルをオーバーライドする方法はありません。

于 2010-07-07T23:06:02.590 に答える
1

すべてのモッキング ツールは、メソッドのみをモックします。

JMockit には、特定のテストからアクセスできないフィールド、メソッド、およびコンストラクターへのアクセスを提供するユーティリティ メソッドもあります。mockit.Expectationsこれらはとのサブクラスで直接利用できますmockit.Verificationsmockit.Deencapsulation同じメソッドが静的クラスでも公開されています。

于 2009-06-20T01:17:38.607 に答える