Этот вопрос, вероятно, был задан много раз раньше. Однако я не мог найти ответы нигде. Здесь я имею дело с устаревшим кодом.Отказывание локальных объектов области с использованием Powermock и mockito в статическом методе
Обращаем ваше внимание, что: Я упрощаю свой вопрос, чтобы получить конкретный ответ. Фрагменты кода представляют только проблему, с которой я сталкиваюсь. Не тот код, который я пытаюсь проверить. Этот фрагмент кода, который будет тестироваться здесь, представляет собой часть общего кода, который мне нужно проверить.
Проблема: myObj.loadContent (NULL, NULL) фактически вызывается вместо ничего не делать, как указано с PowerMockito.doNothing(), когда (mockObj) .loadContent (NULL, NULL);.
код Я хочу модульного тестирования:
class ClassInstantiatingObject {
.
.
public static void doSomething(Arg1 arg1, Arg2 arg2) throws Exception{
MyClass myObj = new MyClass(arg1, arg2);
myObj.loadContent(null, null);
}
}
My Test Unit:
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
.
.
.
@Test
public void testDoSomething() throws Exception {
MyClass mockObj = PowerMockito.mock(MyClass.class);
PowerMockito.whenNew(MyClass.class).withAnyArguments().thenReturn(mockObj);
PowerMockito.doNothing().when(mockObj).loadContent(null, null);
Arg1 mockArg1 = mock(Arg1.class);
Arg2 mockArg2 = mock(Arg2.class);
StaticClass.doSomething(mockArg1, mockArg2);
}
Код для тестирования не может быть изменен. Следовательно, мне нужен способ фактически не вызвать loadContent (null, null) с помощью mockito/powermock.
Кроме того, при использовании:.. PowerMockito.doNothing(), когда (MyClass.class "LoadContent", NULL, NULL) ИЛИ PowerMockito.doNothing(), когда (MyClass.class "LoadContent", Mockito.anyString(), Mockito.anyMap())
Я получаю java.lang.NullPointerException в org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.addAnswersForStubbing
Вы правильно указали свой тестовый класс ('@RunWith (PowerMockRunner.class) @PrepareForTest (MyClass.class'))? – troig
@troig Да, я сделал оба. @RunWith (PowerMockRunner.class) @PrepareForTest ({MyClass.class, MyClass1.class}) –
FYI Я обошел эту проблему, издеваясь над вызовами в методе, возвращающем пустоту с помощью PowerMockito. Однако я все еще не понимаю, почему это не сработает. –