@Test
@RunWith(PowerMockRunner.class)
@PrepareForTest(InstanceA.class)
这两个前缀,最好加在类前面。不写在方法上。可以直接单个测方法
public void testSay3() throws Exception {
File file =EasyMock.createMock(File.class);
//File f=new File("c:\\1.txt");
//InstanceA underTest = PowerMockito.mock(InstanceA.class);
//PowerMockito.when(underTest.getWord("123")).thenCallRealMethod();
PowerMockito.whenNew(File.class).withArguments("123").thenReturn(file);
FileReader reader =EasyMock.createMock(FileReader.class);
PowerMockito.whenNew(FileReader.class).withArguments(file).thenReturn(reader);
BufferedReader in =EasyMock.createMock(BufferedReader.class);
PowerMockito.whenNew(BufferedReader.class).withArguments(reader).thenReturn(in);
EasyMock.expect(in.readLine()).andReturn("中国").times(3).andReturn(null).times(3);
in.close();
EasyMock.expectLastCall();
EasyMock.replay(in);
InstanceA a= new InstanceA();
System.out.println(a.getWord("123"));
}
@Test
public void testSay4() throws Exception {
File file =PowerMockito.mock(File.class);
File f=new File("c:\\1.txt");
PowerMockito.whenNew(File.class).withArguments("123").thenReturn(f);
InstanceA a= new InstanceA();
System.out.println(a.getWord("123"));
}
需要mock的类和方法:-----mock类内部创建的对象
package demo;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class InstanceA implements InterfaceA{
@Override
public void say() {
}
@Override
public String getWord(String str) {
StringBuilder sb = new StringBuilder();
File file = new File(str);
String temp;
BufferedReader in=null;
try {
FileReader reader = new FileReader(file);
in =new BufferedReader(reader);
while ((temp=in.readLine())!=null) {
sb.append(temp);
}
} catch (FileNotFoundException e) {
} catch (IOException e) {
}finally{
if (in!=null) {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return str+sb.toString();
}
}
Powermock和Easymock用法总结
最新推荐文章于 2020-07-29 10:13:00 发布