繁体   English   中英

使用Powermockito模拟最终类的本地对象创建

[英]Mocking local object creation of a final class using Powermockito

我正在尝试使用PowerMockito模拟最终类对象的创建。 但这并未考虑模拟对象并创建实际对象,如输出和调试屏幕截图所示。

这里可能缺少什么。

请澄清。

import java.net.MalformedURLException;
import java.net.URL;

public class Sample {

public void m1(String input) throws IOException {
    URL url = new URL(input);
    URLConnection connection = url.openConnection();
    System.out.println(url);
    System.out.println(connection);
}

}

测试班

import java.net.URL;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest({ URL.class })
public class SampleTest {
@Test
public void testM1() throws Exception {
    String input = "http://www.example.com";

    URL url = PowerMockito.mock(URL.class);
    PowerMockito.whenNew(URL.class).withAnyArguments().thenReturn(url);

    Sample sample = new Sample();
    sample.m1(input);
}
}

输出量

http://www.example.com
sun.net.www.protocol.http.HttpURLConnection:http://www.example.com

在此处输入图片说明

测试本身没有错。 您唯一缺少的是这个

@PrepareForTest({ URL.class , Sample.class})

您还需要准备Sample类。 除非您准备Sample类,否则Powermock不知道它应该代理该类,这意味着它不会干扰该类内部发生的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM