[英]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.