#java #mocking #powermock #easymock
#java #издевательство #powermock #easymock
Вопрос:
Я писал тест junit с использованием EasyMock.Итак, для объекта :-
DataProvider dataProvider = new DataProvider(Data data , Provider provider);
Поэтому мне пришлось дважды имитировать поведение, например :-
@Mock DataProvider dataProvider1 , dataProvider2;
1. PowerMock.expectNew(DataProvider.class, dataRequest, provider1).thenReturn(mockDataProvider1);
2. PowerMock.replay(DataProvider.class);
3. PowerMock.expectNew(DataProvider.class, dataRequest, provider2).thneReturn(mockDataProvider2);
4. PowerMock.replay(DataProvider.class);
Но когда я пытаюсь выполнить это. это выдает ошибку в строке номер 2.
Когда я удалил строки 3 и 4, это удалось без каких-либо проблем.
и мне нужно использовать его дважды в моем поведении. Может кто-нибудь, пожалуйста, помочь?
Комментарии:
1. Можете ли вы привести полный тестовый пример. С помощью @Prepare и ошибки
Ответ №1:
метод replay() не должен вызываться дважды для одного и того же класса в одном и том же методе тестирования.
итак :-
1. PowerMock.expectNew(DataProvider.class, dataRequest, provider1).thenReturn(mockDataProvider1);
3. PowerMock.expectNew(DataProvider.class, dataRequest, provider2).thneReturn(mockDataProvider2);
4. PowerMock.replay(DataProvider.class);
Это сработало.
То же предложение и для функции mockStatic() .
Следует также помнить, что следует использовать функцию mockStatic() только один раз для класса в одном методе тестирования. итак :-
PowerMock.mockStatic(DataProvider.class);
Это должно использоваться только один раз в тестовом методе.