2015-05-11 12 views
7

Pracuję nad projektem, w którym obecnie testujemy z JUnit i Mockito. Teraz próbuję dowiedzieć się, jakie byłyby skutki uboczne dodania PowerMocka do miksu.Dlaczego nie PowerMock

Jakie są jej wady, jakiekolwiek zależności, o których powinienem wiedzieć, jakiekolwiek problemy ze stabilnością?

Widziałem, że obsługuje Java 8. Czy są jakieś problemy? Z tego co przeczytałem, uzyskanie wsparcia dla Java 7 było dość długą drogą.

EDIT: I odgadnąć pytania, które musi zsumować to wszystko być:

Jakie byłyby powody, aby nie używać PowerMock?

+0

Czy możesz być nieco bardziej konkretny w jaki sposób obawiasz się, że PowerMock może nie być wiarygodny? –

+0

Prosimy również ograniczyć liczbę pytań do jednej, lub przynajmniej do jednego pojęcia, jak to jest obecnie, post wpada prosto w kategorię ["niejasne, o co pytasz"] (http://stackoverflow.com/ pomoc/zamknięte pytania). –

+0

Mam nadzieję, że teraz jest to trochę bardziej przejrzyste. Na swojej stronie głównej jest też napisane: "Przełożenie go w ręce młodszych programistów może spowodować więcej szkód niż pożytku". – KKO

Odpowiedz

27

Generalnie, jeśli rozpoczynasz nowy projekt i chcesz (chcesz/są zmuszać) do korzystania z PowerMock ze względu na architekturę twojego kodu oznacza to, że ta architektura jest zła i wymaga ulepszeń. Power Mock daje dostęp do próbnych metod statycznych, konstruktorów itp., A to oznacza, że ​​twój kod nie przestrzega najlepszych zasad programowania.

Power Mock powinien być używany w starszych aplikacjach, w których nie można zmienić kodu, który został Ci podany. Często taki kod nie ma testów jednostek/integracji, a nawet niewielka zmiana może spowodować błędy w aplikacji.

+2

To jest najbardziej odpowiednia odpowiedź. Power Mock jest (bardzo użytecznym) narzędziem specjalnym do tworzenia legendarnego, śmierdzącego lub w inny sposób "trudnego" kodu testowalnego (dobrym przykładem, który nie jest zapachem kodowym, byłoby kpiny z "ostatnich" klas), używając go szeroko w aktywnie opracowanym kodzie baza może być oznaką problemu. –

+0

Ok, rozumiem, że powermock powinien być używany tylko dla starego kodu, a nie nowych projektów. Czego nie rozumiem, to "dlaczego"? Czy pojawiają się jakieś problemy, jeśli używasz go w nowych projektach?Czasem zdarzają się klasy statyczne, może nawet ostateczne, które trzeba przetestować, prawda? – KKO

+0

Dotyczy to głównie projektowania kodu. Ładny i czysty kod nie wymaga stosowania statycznych metod, które są trudne do sprawdzenia. Oprócz korzystania z nich należy korzystać z usług lekkich i luźno powiązanych. Zobacz http://stackoverflow.com/questions/871434/java-utility-class-vs-service. Ale oczywiście zależy to od tego, co chcesz osiągnąć w swoim systemie. – wsl