问题描述
我有以下类的实现..'EmpAddress' 是一个接口 &'EmployeeInterfaceFactory' 是一个具有静态方法 'getAddressImpl' 的类,它提供 EmpAddress 实现的类对象......我有 JUnit 方法,如下所示空指针异常...在实现此 JUnit 时需要帮助/建议...
***************************************************************************
public class Employee(){
private Address address = new Address();
public String getEmployeeDetails(){
String details = address.getDetails();
return details;
}
}
***************************************************************************
public Address address(){
private EmpAddress empAddress = EmployeeInterfaceFactory.getAddressImpl();
public String getDetails(){
String details = empAddress.getEmpDetails(); // Null pointer exception coming here
return details;
}
}
****************************************************
@RunWith(powermockrunner.class)
@PrepareForTest({EmployeeInterfaceFactory.class})
public class Employeetest(){
Employee emp;
EmpAddress empAddress;
@Before
public void setUp(){
emp = new Employee();
empAddress = createMock(EmpAddress.class);
mockStatic(EmployeeInterfaceFactory.class);
}
@Test
public void getEmployeeDetailstest(){
expect(EmployeeInterfaceFactory.getAddressImpl()).andReturn(empAddress);
expect(empAddress.getEmpDetails()).adnReturn("testing data");
String result = emp.getEmployeeDetails();
}
}
解决方法
检查您是否在第 private EmpAddress empAddress = EmployeeInterfaceFactory.getAddressImpl();
行获得 empAdress,也许您可以将其移动到 setUp
方法,在 setUp
方法中调用 getDetails
,这样 empAdress 就不是当您尝试在 getDetails
在 TestCase 中,您返回的是尚未初始化的 empAddress,这会导致空指针
expect(EmployeeInterfaceFactory.getAddressImpl()).andReturn(empAddress);