Переменная, защищающая суперкласс, с помощью jmockit - PullRequest
2 голосов
/ 11 января 2009

Я не смог смоделировать защищенную переменную, определенную в суперклассе. Я мог смоделировать защищенный метод в суперклассе, но не смог смоделировать защищенную переменную в подклассе, где я пишу тестовый сценарий для подкласса. Пожалуйста, если кто-то вышел Там есть какой-либо солютон для этого. Пожалуйста, ответьте.

Спасибо Шаши

Ответы [ 2 ]

4 голосов
/ 08 июля 2010

Вы можете сделать это, используя метод Deencapsulation.setField. Например:

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

Это установит значение статической переменной myStatic в 2. Обратите внимание, что, хотя это будет работать для статики, оно не будет работать для статического финала. AFAIK нет способа переопределить статический финал.

1 голос
/ 20 июня 2009

Все инструменты для насмешек, только методы издевательства.

JMockit также имеет служебные методы, которые обеспечивают доступ к недоступным полям, методам и конструкторам из данного теста. Они непосредственно доступны для подклассов mockit.Expectations и mockit.Verifications. Те же методы также доступны в статическом mockit.Deencapsulation классе.

...