public class EmployeeService {
public void foo(){
log();
}
public void foo(String str){
log();
}
public void log(){
System.out.println("I am console log");
}
public boolean exist(String name){
return checkExist(name);
}
private boolean checkExist(String name) {
throw new UnsupportedOperationException();
}
}
import org.junit.Assert;
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;
import static org.junit.Assert.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest(EmployeeService.class)
public class EmployeeServiceTest {
/**
* 因为是Mock出来的EmployeeService,所以不会有输出
*/
@Test
public void testFoo(){
EmployeeService employeeService = PowerMockito.mock(EmployeeService.class);
employeeService.foo();
}
/**
* 使用spy方法,相当于创建一个实际的对象,会有输出
*/
@Test
public void testFoo2(){
EmployeeService employeeService1 = PowerMockito.spy(new EmployeeService());
employeeService1.foo();
}
/**
* 当我们执行 employeeService.foo("hello");则不会有输出
* 当我们执行employeeService.foo("world");则会有输出
*/
@Test
public void testFoo3(){
EmployeeService employeeService = PowerMockito.spy(new EmployeeService());
String arg = "hello";
PowerMockito.doNothing().when(employeeService).foo(arg);
employeeService.foo("hello");
}
@Test
public void testCheck(){
try{
EmployeeService employeeService = PowerMockito.spy(new EmployeeService());
//checkExist方法传递andy的时候,返回true
PowerMockito.doReturn(true).when(employeeService,"checkExist","andy");
Assert.assertTrue(employeeService.exist("andy"));//为andy的时候,运行正常;输入其他的时候,返回异常
}catch (Exception e){
Assert.fail();
}
}
}