Я только что сделал то же самое. В моем случае я хотел убедиться, что метод не «вызывает» ошибку, но так как это метод catch / log / return, я не смог проверить его напрямую без изменения класса.
Я хотел просто издеваться над логгером, который я передал, но что-то насчет насмешки над интерфейсом «Журнал», похоже, не работало, и насмешка над классом вроде «SimpleLog» не работала, потому что эти методы были окончательными.
Я закончил тем, что создал анонимный внутренний класс, расширяющий SimpleLog, который переопределяет метод «log (level, string, error)» базового уровня, которому делегируются все остальные, затем просто ждал вызова с «level» 5 .
В общем, расширение класса для поведения не является действительно плохой идеей, может быть предпочтительнее насмешки, если это не слишком сложно.