Как смоделировать статические методы, используя UnitilsJUnit4?

У меня есть метод getAllCustomers внутри CustomerService учебный класс. Внутри этого метода я вызываю другой статический метод из CustomerDao учебный класс. Теперь, когда я пишу джунит для метода getAllCustomers внутри customerService класс, где я хочу издеваться над вызовом статического метода CustomerDao т.е. getAllCustomers, Вот краткий фрагмент кода метода getAllCustomers внутриCustomerService учебный класс. Можно ли смоделировать вызов статического метода с помощью unitils?

Public static List<CustomerDate> getAllCustomers()
{
//some operations
List<CustomerDate> customers=CustomerDao.getAllCustomers();// static method inside CustomerDao
//some operations
}

Приведенный выше код является лишь примером, который я пытаюсь привести. Пожалуйста, избегайте обсуждения, почему эти методы разработаны как статические методы. Это отдельная история.)

2 ответа

Решение

Я сомневаюсь, что это может быть достигнуто с помощью unitils. Но, пожалуйста, подумайте об использовании PowerMock, который, кажется, способен обрабатывать то, что вам нужно. Он может высмеивать статические методы, частные методы и многое другое (Ref: PowerMock)

Это было бы вопросом:

  • Настройка макета
  • Вызывая макет и ожидая некоторых данных обратно
  • Проверка конечного результата вашего звонка с учетом ваших данных

Итак, без особых сложностей со статическим вызовом, вот способ, которым вы можете настроить его в 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
    }
}
Другие вопросы по тегам