[英]How to mock static methods using UnitilsJUnit4?
我在CustomerService
類中有方法getAllCustomers
。 在此方法內部,我從CustomerDao
類調用了另一個靜態方法。 現在,當我在customerService
類中編寫方法getAllCustomers
的junit時,我想在其中模擬對CustomerDao
靜態方法即getAllCustomers
。 這是CustomerService
類中的getAllCustomers
方法的簡短代碼段。 是否可以使用unitils模擬靜態方法調用?
Public static List<CustomerDate> getAllCustomers()
{
//some operations
List<CustomerDate> customers=CustomerDao.getAllCustomers();// static method inside CustomerDao
//some operations
}
上面的代碼只是我要嘗試的一個示例。 請避免討論為什么將這些方法設計為靜態方法。 那是一個單獨的故事。)
這是一個問題:
因此,無需費力就靜態調用,可以通過以下方法在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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.