我在getAllCustomers
类中有方法CustomerService
。在这个方法中,我从CustomerDao
类调用另一个静态方法。
现在当我在getAllCustomers
类中编写方法customerService
的junit时,我想在那里模拟调用
CustomerDao
的静态方法,即getAllCustomers
。以下是方法getAllCustomers
的简短代码段
CustomerService
课程。 是否可以使用unitils模拟静态方法调用?
Public static List<CustomerDate> getAllCustomers()
{
//some operations
List<CustomerDate> customers=CustomerDao.getAllCustomers();// static method inside CustomerDao
//some operations
}
上面的代码只是我想要的一个例子。请避免讨论为什么这些方法被设计为静态的 方法。这是一个单独的故事。)
答案 0 :(得分:0)
答案 1 :(得分:0)
这将是一个问题:
所以,如果没有关于静态调用的真正讨论,可以通过以下方式在PowerMock中进行设置:
@RunWith(PowerMockRunner.class)
@PrepareForTest(CustomerDao.class)
public class CustomerTest {
@Test
public void testCustomerDao() {
PowerMock.mockStatic(CustomerDao.class);
List<CustomerDate> expected = new ArrayList<CustomerDate>();
// place a given data value into your list to be asserted on later
expect(CustomerDao.getAllCustomers()).andReturn(expected);
replay(CustomerDao.class);
// call your method from here
verify(CustomerDao.class);
// assert expected results here
}
}