Помимо того, что издевается окончательных методов трудно; особенно когда вы пытаетесь манипулировать такими ядрами как java.lang.String; real пункт здесь имеет различный характер: это просто неправильный для переопределения String.equals() для теста.
Просто говорят: если ваша логика опирается на сравнение двух объектов, то вы должны сосредоточиться на придумывая дизайн, который позволяет вводить по крайней мере один из этих двух значений - вместо использования грязных ухищрений, чтобы манипулировать внутренности соответствующего равного метода!
Но если ваш дизайн таков, что вы считаете, что вам нужен PowerMockito, чтобы сделать его проверяемым (путем переопределения методов String.equals()); скорее всего: вы просто создали untestable код в первую очередь.
Таким образом, мой «не-ответ». Шаг назад от вашего текущего подхода, проверьте эти videos, чтобы узнать, как написать testable код; затем вернитесь и переработайте свой дизайн.
Слишком часто люди создают broken дизайн; и тогда они предполагают, что PowerMock (ito) - это способ «исправить» последствия этого сломанного дизайна. И слишком часто, точное обратное верно: если вы считаете, что вам нужен PowerMock (ito), тогда ваш дизайн должен быть переработан.
Почему вы думаете, что хотите сделать это? –
Возможно, полезно [обсуждение группы Mockito] (https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/mockito/d25SPtJ4108/Bj1kbarjBAAJ), подчеркнув, что попытка фальсификации строк может сломать ваш JDK, потому что о том, как они обрабатываются внутри страны. На этом потоке нет исчерпывающего объяснения, однако я не могу понять причину, чтобы попытаться насмехаться над строками ... Возможно, вы смотрите на свою проблему с неправильного угла. Можете ли вы поделиться некоторыми мыслями по этому поводу? – Morfic
Для справки: я сомневаюсь, что вы когда-нибудь услышите еще многое по этому вопросу, поэтому, пожалуйста, подумайте, достаточно ли один из ответов для принятия. – GhostCat