簡體   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