Оглавление:

Можете ли вы провести модульное тестирование статических методов?
Можете ли вы провести модульное тестирование статических методов?

Видео: Можете ли вы провести модульное тестирование статических методов?

Видео: Можете ли вы провести модульное тестирование статических методов?
Видео: Unit тестирование в С#. Как создать Unit тест в C# 2024, Май
Anonim

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

Учитывая это, как вы тестируете статические методы?

Есть четыре простых шага в настройке теста, имитирующего статический вызов:

  1. Используйте средство запуска PowerMock JUnit: @RunWith (PowerMockRunner.
  2. Объявите тестовый класс, над которым мы издеваемся:
  3. Сообщите PowerMock имя класса, содержащего статические методы:
  4. Настройте ожидания, сообщив PowerMock ожидать вызова статического метода:

Точно так же мы можем имитировать статические методы C #? 4 ответа. Moq (и другие на основе DynamicProxy издевательский frameworks) не могут насмехаться все, что не является виртуальным или абстрактным метод . В качестве альтернативы, ты мог бы рефакторинг вашего дизайна для абстрактных вызовов статические методы , и предоставьте эту абстракцию вашему классу с помощью внедрения зависимостей.

В связи с этим, как вы проводите модульное тестирование частных методов?

Модульный тест только общедоступный API. При написании модульные тесты , имитировать поведение клиентов SUT. Не надо тестировать частные методы . Или модульный тест их косвенно, используя общедоступный API, или извлекать их в отдельные классы и тестовое задание эти классы вместо этого.

Что такое статический метод?

В Java статический метод это метод который принадлежит классу, а не экземпляру класса. В метод доступен для каждого экземпляра класса, но методы определенные в экземпляре могут быть доступны только этому члену класса.

Рекомендуемые: