Будьте обережні з testng лісенерамі

Вирішив написати таку ось, на мій погляд, цікаву і, напевно, для багатьох пізнавальну замітку. Сьогодні поговоримо про приховані загрози, які несуть в собі TestNG лісенери.

Будьте обережні з testng лісенерамі

Серед автоматизаторів, що використовують Java, здавна бушує холівар, що ж краще, TestNg або JUnit. На жаль, але далі банальних листувань в Slack чаті або розмов в холі конференцій справа не заходить.

Мій VideoRecoder має інтеграцію і з TestNG. Я реалізував таку інтеграцію з допомогою лісенеров, так як це найпростіший і гнучкий спосіб. АЛЕ, як виявилося, ці лісенери тягнуть за собою купу підводних каменів, про які багато, швидше за все, навіть не знали.

Я опишу лише два випадки, які особисто мене дуже сильно здивували і мали серйозний вплив на роботу Java VideoRecorder.

Факт 1: Анотація @Listener застосовує лісенер до всіх класів

Ось така ось підлість номер один. Скажімо, ви написали клас і захотіли застосувати до нього якийсь свій лісенер:

Ну, ніби як відмінно, запускаємо - все працює, радіємо, пишемо в резюме, що ми вміємо робити таку класну штуку.

АЛЕ радіємо недовго. Варто нам написати ще пару-трійку класів з тестами, як ми зауважимо, що наш лісенер спрацьовує і для них, хоча ми їх ніякими інструкція не Маркано. Ось це подарунок !!

Начебто, нічого страшного, ну, застосовується - і що?

Схожі статті