Статические методы как обертка - PullRequest
1 голос
/ 28 октября 2011

Если у вас есть класс MyClass с набором открытых методов;MethodA, MethodB и MethodC.А в некоторых местах приложения вам нужен только один метод из MyClass, например:

MyClass myClass = new MyClass();
myClass.MethodA();

Чтобы упростить вышесказанное, я хотел бы создать один статический метод, который переносит вышеупомянутые строки кода.Я планирую написать модульные тесты против MethodA.В моем модульном тесте MethodA взаимодействует с интерфейсом, который реализован с использованием фиктивной инфраструктуры (я думаю, это называется Inversion of Control).

Можно ли предположить, что при тестировании MethodA этот статический метод (метод-обертка)также проверяется косвенно.Я предполагаю, что фактическая реализация интерфейса, используемого в MethodA, также тестируется.

Или я не должен реализовывать статический метод?

Ответы [ 2 ]

0 голосов
/ 28 октября 2011

Пожалуйста, не делайте этого!

Статические методы, используемые так, как вы хотите, являются полной противоположностью инверсии управления / внедрения зависимостей и, как таковые, являются плохой практикой.То, что вы хотите сделать, это внедрить во все классы, которым необходим MyClass интерфейс к нему (либо внедренный через конструктор или установщик, вручную или с использованием инфраструктуры IoC, такой как Spring).строк кода в статическом методе, который вы вызываете из другого класса, тогда вы слишком тесно связываете конкретную реализацию MyClass, что противоположно тому, чего вы хотите достичь.

Но чтобы ответить на вашболее конкретный вопрос: никогда не безопасно предполагать, что код проверяется другим тестом, если это не так.Я имею в виду следующее: если нет НИКАКОГО теста, проходящего статический метод, то он не рассматривается.Даже если вы думаете, что это тривиально, не забывайте, что он может быть подвергнут рефакторингу позже, и ни один тест не покажет, что он сломан.

0 голосов
/ 28 октября 2011

Нет, предполагать, что метод обертки также тестируется, небезопасно.В методе-обертке есть код, и в этом коде может быть дефект, поэтому вам также нужно написать модульные тесты для этого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...