2016-05-09 3 views
0

Ниже приведены 2 классы, определяемые как:Как издеваются класс в другой класс JUnit Mockito

Class1{ 
    public method1 
    { 
     class2.getInstance().method2(); 
    } 
} 

Class2{ 
    public static getInstance() { .... } 

    public method2() { .... } 

    public Class3 obj = new Class3(); 
} 

Мне нужно написать тест JUnit для method1 из class1. Но мне нужно знать, как я могу mock getInstance() и method2() класса2.

Кроме того, скажите, пожалуйста, как я могу высмеять объект класса 3.

+0

http://stackoverflow.com/questions/10583202/powermockito-mock-single-static-method-and-return-object –

ответ

0

Для выполнения этой задачи (например, mocking new) вам понадобится другая структура. Например, PowerMock.

+0

Если возможно, пожалуйста, вы можете помочь мне с примером? – Vishwanath

+0

Посмотрите на ответ Джеральда;) – Wavemaster

1

Если вам трудно написать хороший тест для вашего класса, вы должны перестроить свой класс для лучшего контролируемости, что причина TDD также называется Test Driven Design . Трудно написать тест для простого класса.

Однако

0

Так человек , ребята, которые уже ответили вам, правы.

Если вам сложно написать хороший тест для вашего класса, вы должны переделать свой класс для лучшей тестируемости, вот почему TDD также называется Test Driven Design. Трудно написать тест для простого класса.

Однако

как издеваются статические методы описаны здесь PowerMockito издеваться единственный статический метод и вернуть объект (благодаря Jorge) как частично издеваться класс уже описано здесь: Как издеваются вызов внутренний метод из JUnit

Я могу добавить следующее:

Если у вас действительно есть веские причины, чтобы делать то, что вы хотите, я советую вам дальше:

Вы можете использовать метод библиотеки powermock Whitebox.setInternalState(), чтобы высмеять объект класса 3.

Whitebox.setInternalState(class2, "obj", class3Mock); 
Смежные вопросы