2016-06-22 2 views
0

다른 Util 클래스에서 정적 메서드를 호출하는 조각이 있습니다. ?Mockito 테스트 : 정적 메서드가 조각 내부에서 호출되었는지 확인합니다.

@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) 
나는 UtilClass.dummyStaticMethod()가 PowerMockito를 사용하여 Mockito 테스트에서 호출 된 것을 확인할 수 있습니다 방법

public class DummyFragment extends Fragment { 

    public void dummyMethodCall(){ 
     UtilClass.dummyStaticMethod(Arg arg); 
    } 

} 

다음은 내 현재 테스트입니다

답변

1

실제 테스트에서 호출되었는지 확인하려면 dummyStaticMethod()에서 true로 설정 한 부울 정적 멤버를 UtilClass에 추가 한 다음 테스트에서 호출이 이루어진 후 해당 값을 확인하십시오.

디버그 목적으로 만 확인하려면 디버그 모드에서 실행하고 dummyStaticMethod에 중단 점을 설정하거나 System.out.print를 메서드에 추가 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 불행히도 PowerMockito를 제대로 사용하지 않기 때문에 정적 메서드를 호출하여 테스트가 중단됩니다. 그래서 나는 첫 번째 접근법을 따를 수 없다. ( – Cbr

+0

당신이 말했을 때, 당신의 질문에서와 같은 로그를 가지고있는 것인가? 그렇다면 DummyFragment의 60 번째 줄에 문제가있는 것처럼 보인다. 정적 메서드를 호출 할 때 새로운 충돌이 발생합니까? –

관련 문제