PowerMock应用二:模拟new对象
来个简单的
import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.Mockito;import org.powermock.api.mockito.PowerMockito;import org.powermock.core.classloader.annotations.PrepareForTest;import org.powermock.modules.junit4.PowerMockRunner;@RunWith(PowerMockRunner.class)// 注意这里,这个是new FileInputStream所在的类@PrepareForTest({ AA.class })public class MockWhenNew {@Testpublic void test() throws Exception {// 模拟数据流File file = PowerMockito.mock(File.class);FileInputStream is = PowerMockito.mock(FileInputStream.class);PowerMockito.whenNew(FileInputStream.class).withArguments(file).thenReturn(is);InputStreamReader ir = new InputStreamReader(new ByteArrayInputStream("123".getBytes()));PowerMockito.whenNew(InputStreamReader.class).withArguments(Mockito.any(FileInputStream.class)).thenReturn(ir);AA spy = new AA();Assert.assertEquals("123", spy.aa(file));}}class AA {public String aa(File file) throws Exception {FileInputStream in = new FileInputStream(file);InputStreamReader is = new InputStreamReader(in);BufferedReader reader = new BufferedReader(is);String line = "", s = "";while ((line = reader.readLine()) != null) {s += line;}return s;}}