1

サブクラスによって拡張される抽象クラスが 1 つあり、スーパー クラスの保護されたデータ型で使用されるクラスをモックしたいとします。問題は、モックする必要があるクラスがデフォルトのデータ型であるため、パッケージの外部からアクセスできないことです。私の主張を明確にするために例を挙げましょう。ご協力いただきありがとうございます。

    class protectedVariableClass{

    public SomeObject someObject1;
    public SomeObject someObject2;  
    }

    public abstract class superClass {

    protected protectedVariableClass protectedVariableClass;

    ..................
    .................
    }

    public class subClass extends superClass {

    protected boolean someMethod() {
    protectedVariableClass.someObject1.printValue;
    }

    }

Jmockit を使用してテストしようとすると、スーパー クラスの保護された変数のモックを作成できません。

    public class SubClassTest{

    @Mocked
    private protectedVariableClass mockedObject; // Cannot access the class with default data type outside package.

    @Test
    public void testClass {
    subClass s1 = new subClass();
    s1.someMethod();
    }

    }
4

1 に答える 1

0

realClassNameの属性を使用できます@Mockedが、最善の解決策は、アクセスできないクラスをモックしないことです。

テストしたいクラスがパッケージ プライベート クラスを使用しているという事実は、通常、実装の詳細にすぎないため、テスト コードに表示されるべきではありません。テストされたコードによって呼び出されるメソッドにも同じことが当てはまりprivateます: それらはモックされるべきではありません。

于 2012-07-24T12:22:57.007 に答える