2014-11-14 5 views
3

Есть ли какой-нибудь метод, который высмеивает вызов супер метода в классе с использованием Powermock?mocking super implementation using powermock

Например:

public void processRetrievedData() { 
    super.processRetrievedData(); 
} 

есть в любом случае, чтобы издеваться «super.processRetrievedData()»?

Спасибо,

Rajan

ответ

0

Это ужасная идея, и грязный хак.

Если это часть вашего предмета, находящегося под тестированием, вы никогда не должны делать такие вещи, так как вы проверяете поведение всего этого класса, а не только его часть.

Если вам действительно нужно сделать подобное, вы можете расширить класс и переопределить метод processRetrievedData, чтобы он не вызывал супер - таким образом вы заглушите этот метод.

0

Хотя это плохая практика, иногда вам нужно издеваться над наследством, когда вы работаете в среде, где нет выбора. Например, мне нужно было издеваться над методами суперкласса в фрагменте диалога в Android, чтобы изолировать мои модульные тесты. В вашем случае, в пределах вашего использования теста ...

@PrepareForTest(ChildClass.class) 
public class ChildClassTest { 
    @Test 
    public void testMethod() { 
     PowerMockito.suppress(PowerMockito.method(SuperClass.class, "processRetrievedData")) 
     // Run method and test 
    } 
} 

Есть другие перегруженные методы, перечисленные в API под классом MemberMatcher, которые являются полезными в других случаях, например, метод имеет параметры, существует дополнительные наследственные методы, и т.д. Надеюсь, что это помогает.

Смежные вопросы