Що таке whenNew?

whenNew() дозволяє нам вставляти нашу підробку або макет замість фактичного створення нового об’єкта зазначеного класу. Це чудово працює, нам просто потрібно додати наш клас в анотацію @PrepareForTest, і PowerMock введе наш макет. Просто так. Ось приклад класу: Copy.Feb 7, 2023

PowerMock — це структура, яка розширює інші макетні бібліотеки, такі як EasyMock, потужнішими можливостями. PowerMock використовує спеціальний завантажувач класів і маніпулювання байт-кодом дозволити знущання над статичними методами, конструкторами, кінцевими класами та методами, приватними методами, видалення статичних ініціалізаторів тощо.

Імітація будівництва нових об'єктів

  1. Використовуйте анотацію @RunWith(PowerMockRunner. class) на рівні класу тесту.
  2. Використовуйте анотацію @PrepareForTest(ClassThatCreatesTheNewInstance. class) на рівні класу тестового випадку.
  3. Використовуйте PowerMock. createMock(NewInstanceClass. …
  4. Використовуйте PowerMock. …
  5. Використовуйте PowerMock. …
  6. Використовуйте PowerMock.

Пожертвування кодом хорошого дизайну Powermock дозволяє тестувати поганий код, не змінюючи його на хороший код. Уникнення powermock на ранній стадії покращить код, а не створить технічний борг через поганий код. Використання Powermock у великих програмах ускладнює тестування.

Нарешті, хоча приватні методи можна перевірити за допомогою PowerMock, ми повинні бути дуже обережними, використовуючи цю техніку. Оскільки метою нашого тестування є перевірка поведінки класу, нам слід утримуватися від зміни внутрішньої поведінки класу під час модульного тестування.

whenNew() дозволяє нам вставляти нашу підробку або макет замість фактичного створення нового об’єкта зазначеного класу. Це чудово працює, нам просто потрібно додати наш клас в анотацію @PrepareForTest, і PowerMock введе наш макет. Просто так. і ось тестовий випадок із використанням ін’єкції whenNew().