Я настраиваю насмешку над классом статических методов. Я должен сделать это с помощью метода установки JUnit @Before
-annotated.
Моя цель - настроить класс так, чтобы он вызывал реальные методы, за исключением для тех методов, которые я явно высмеиваю.
В основном:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class);
// mock out certain methods...
when(StaticUtilClass.someStaticMethod(anyString())).thenReturn(5);
// Now have all OTHER methods call the real implementation??? How do I do this?
}
Проблема, с которой я сталкиваюсь, заключается в том, что в StaticUtilClass
метод public static int someStaticMethod(String s)
, к сожалению, выдает RuntimeException
, если ему присваивается значение null
.
Поэтому я не могу просто пойти очевидным путем вызова реальных методов в качестве ответа по умолчанию, как показано ниже:
@Before
public void setupStaticUtil() {
PowerMockito.mockStatic(StaticUtilClass.class, CALLS_REAL_METHODS); // Default to calling real static methods
// The below call to someStaticMethod() will throw a RuntimeException, as the arg is null!
// Even though I don't actually want to call the method, I just want to setup a mock result
when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5);
}
Мне нужно установить ответ по умолчанию для вызова реальных методов для всех других статических методов после. Я высмеиваю результаты из метода, который меня интересует.
Это возможно?