У меня есть фрагмент, который вызывает статический метод из другого класса Util. ?Mockito Test: проверка статического метода была вызвана внутри фрагмента
public class DummyFragment extends Fragment {
public void dummyMethodCall(){
UtilClass.dummyStaticMethod(Arg arg);
}
}
Как я могу проверить, что UtilClass.dummyStaticMethod() была вызвана в тесте Mockito использованием PowerMockito Ниже мой текущий тест:
@RunWith(RobolectricGradleTestRunner.class)
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*"})
@Config(constants = BuildConfig.class, sdk = 19, packageName = "com.dummy.package", application = DummyApplication.class)
@PrepareForTest({UtilClass.class})
public class FragmentTest {
private DummyFragment mDummyFragment;
@Rule
public PowerMockRule rule = new PowerMockRule();
@Before
public void setUp() {
mDummyFragment = new DummyFragment();
}
@Test
public void dummyMethodCall_success() {
PowerMockito.mockStatic(UtilClass.class);
mDummyFragment.dummyStaticMethod();
PowerMockito.verifyStatic();
}
}
Журнал ошибок:
java.lang.IllegalStateException: Failed to transform class with name android.app.Activity. Reason: android.app.LoaderManagerImpl
at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:267)
at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:180)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:70)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at javassist.runtime.Desc.getClassObject(Desc.java:43)
at javassist.runtime.Desc.getClassType(Desc.java:152)
at javassist.runtime.Desc.getType(Desc.java:122)
at javassist.runtime.Desc.getType(Desc.java:78)
at com.dummy.package.DummyFragmentTest.setUp(DummyFragment.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
Спасибо за ваш ответ. К сожалению, тест выходит из строя, вызывая статический метод, потому что я, вероятно, не пользуюсь PowerMockito. Поэтому я не могу следовать первому подходу :( – Cbr
Когда вы говорите, что это сбой, это тот же журнал, что и в вашем вопросе? Если это так, то проблема в том, что проблема в вашей настройке, в строке 60 DummyFragment. Или это новый сбой при вызове статического метода? –