Ми намагаємося розробити нашу систему, щоб бути перевіряемою та здебільшого розробленою за допомогою TDD. В даний час ми намагаємося вирішити таку проблему:
У різних місцях нам необхідно використовувати статичні допоміжні методи, такі як ImageIO та URLEncoder (обидва стандартні Java API) та різні інші бібліотеки, що складаються здебільшого статичних методів (наприклад, бібліотеки Apache Commons). Але надзвичайно важко перевірити ті методи, які використовують такі статичні класи помічників.
У мене є кілька ідей для вирішення цієї проблеми:
- Використовуйте макетну рамку, яка може глузувати зі статичних класів (наприклад, PowerMock). Це може бути найпростішим рішенням, але якимось чином відчуваю, що здається.
- Створіть миттєві класи обгортки навколо всіх цих статичних утиліт, щоб їх можна було вводити в класи, які ними користуються. Це звучить як відносно чисте рішення, але я боюся, що ми в кінцевому підсумку створимо дуже багато цих класів з обгортки.
- Витягуйте кожен виклик цих статичних допоміжних класів у функцію, яку можна переосмислити і протестувати підклас класу, який я насправді хочу перевірити.
Але я продовжую думати, що це просто повинна бути проблемою, з якою доводиться стикатися багатьом людям при виконанні TDD - тому для цієї проблеми вже повинні бути рішення.
Яка найкраща стратегія зберігати класи, які використовують ці статичні помічники?