Статычныя метады ў якасці абалонкі

Калі ў вас ёсць клас з імем MyClass з наборам публічных метадаў; Methoda, MethodB і MethodC. А ў некаторых месцах прыкладання патрабуецца толькі адзін метад з MyClass, напрыклад:

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

Для спрашчэння вышэйпададзенага я хацеў бы стварыць адзін статычны метад, які абгортвае вышэйпаказаныя радкі закадаваныя. Я планую пісаць тэсты супраць Methoda. У маім тэставым модулі Methoda ўзаемадзейнічае з інтэрфейсам, які рэалізуецца з дапамогай макета рамкі (я думаю, што гэта завецца Інверсія Control).

Ці бяспечна выказаць здагадку, што ў выніку тэставання Methoda, што статычны метад (метад абгорткі) таксама правяраюцца ўскосна. Я мяркую, што фактычна рэалізацыя для інтэрфейсу, які выкарыстоўваецца ў Methoda таксама праходзіць выпрабаванні.

Ці я не рэалізаваны статычны метад?

1

2 адказы

Калі ласка, не рабі гэтага!

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

Калі абгарнуць радкі кода ў статычны метад, які вы называеце з іншага класа, то вы будзеце пара канкрэтнай рэалізацыі MyClass занадта шчыльна, што з'яўляецца супрацьлегласцю таго, што вы хочаце дасягнуць.

Але каб адказаць на ваша пытанне больш канкрэтны, гэта ніколі з упэўненасцю выказаць здагадку, код не правяраецца іншым выпрабаваннем, калі ён на самай справе не з'яўляецца. Тое, што я маю на ўвазе: калі ніякіх выпрабаванняў, якія праходзяць праз статычны метад, то гэта не распаўсюджваецца. Нават калі вы думаеце, што гэта трывіяльна, не забывайце, што можа быць перапрацавана пазней, і ні адзін тэст не пакажа, што зламана.

0
дададзена

Не, гэта не бяспечна выказаць здагадку, метад абгорткі таксама праходзіць выпрабаванні. Існуе код у метадзе абгорткі, і гэты код можа мець дэфект ў ім, так што вам прыйдзецца пісаць тэсты супраць гэтага кода, а таксама.

0
дададзена