簡體   English   中英

有沒有辦法告訴PowerMock不要對通過Java反射實例化的所有對象使用MockClassLoader?

[英]Is there any way to tell PowerMock not to use MockClassLoader for all objects which are instantiated via java reflection?

我看到serviceClass類加載器的類型是MockClassLoader 有什么辦法可以防止這種情況? @PowerMockIgnore是唯一的選擇嗎?

A類與powermock一起運行,並通過反射調用B類的方法

@RunWith(PowerMockRunner.class)
public class A {
@Test 
public void testA() throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException{
    Class<?> serviceClass = Class.forName(B.class.getName());
    Object serviceStub = serviceClass.newInstance();
    Method method = serviceClass.getMethod("fun");
    method.invoke(serviceStub);
    }
}

class B{
public void fun(){
     System.out.println("fun!");
    }
}

如果加載類,則可以指定類加載器,例如:

@RunWith(PowerMockRunner.class)
public class A {
   @Test 
   public void testA() throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException{
       ClassLoader classLoader = ClassLoader.getSystemClassLoader();
       Class<?> serviceClass = Class.forName(B.class.getName(), true, classLoader);
       Object serviceStub = serviceClass.newInstance();
       Method method = serviceClass.getMethod("fun");
       method.invoke(serviceStub);
   }
}

但是,如果您希望該類在隱式加載時不會被MockClassloader加載,則使用@PowerMockIgnore是唯一的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM