K.....7
K.....7
Treść przeznaczona dla osób powyżej 18 roku życia...
  • Najlepsze
  • Wszystkie komentarze
Desseres
@KKK1337: na wykopie szukasz zakresu taska do realizacji? xD
Kuzguwu
@KKK1337: testujesz 4 różne klasy w jednej klasie testowej, co samo w sobie już jest słabe. Dodatkowo w 3 klasach z 4 sprawdzasz tylko po 1 przypadku, więc równie dobrze GrossPriceCalculator mógłby zawsze zwracać 124.23 i przejdzie test. Rozbij to na 4 osobne testy i dopisz więcej przypadków (np 0, bardzo duże liczby, bardzo małe liczby, liczby ujemne, przypadek gdy będzie więcej niż 2 cyfry po przecinku, etc)
Jurigag
Jurigag
  • adult
2
Treść przeznaczona dla osób powyżej 18 roku życia...
Jurigag
@Jurix: @Saly: @KKK1337: @Desseres: dodając jeszcze do tego mojego komentarza - to te całe piramidy testów który mówią o tym że unitowych powinno być jak najwięcej integracyjnych mniej(ale co zabawne nie bardzo definiuje ta piramida co jest unit a co integration) a e2e/feature jak najmniej powstały właśnie wtedy jak raz - nie brało to w ogóle pod uwagi architektury mikroserwisowej/mirkofrontendów w obecnych czasach(sama piramida
polskiexiaomiwspodnicy
@KKK1337: jeśli na pytanie nie dostajesz odpowiedzi to się stamtąd zawijaj
s.....u
s.....u
@KKK1337: męcz księżniczkę aż wytłumaczy
Saly
Saly
1
@KKK1337: te testy są całkiem dobre, bo są proste. Jedyne co bym zmienił to wyrzucenie tych helperow: ich zadanie to generalnie ukrywanie elementów nieistotnych w danym teście, u ciebie jest na odwrót: nic nie upraszczają tylko zasłaniają to jak się używa danego obiektu. Co do klas testowanych: wywal te settery, zamiast tego przekaż potrzebne parametry w konstruktorze
Saly
Saly
1
@Jurix: w definicji testów jednostkowych nie ma nic o tym, że jednostką jest klasa. Tutaj właśnie jest największy problem z nazewnictwem testów, że nie wiadomo co czym jest i większość nazw jest używana według doświadczeń danej osoby.
Saly
Saly
1
@Jurix: In computer programming, unit testing is a software testing method by which individual units of source code—sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures https://en.wikipedia.org/wiki/Unit_testing . Sprowadzając do absurdu to żaden unit test nie jest unit testem, bo zawsze korzystamy z innych klas np. klasa do splitowania stringów będzie używała stringów, który jest innym unitem kodu z własną hermetyzacją
Saly
Saly
1
@Jurix: np. tutaj https://youtu.be/2vEoL3Irgiw?t=170 autor nazywa unitami testy modułu a integracyjnymi testy integracji wielu modułów. Sam nie używam nazwy unit test, bo według mnie jest ona szkodliwa rodząc dyskusje, których nie powinno być. Jedyne co mnie wkurza, to, że ktoś broni definicji, która nie istnieje
K.....7
K.....7
@Desseres: testy powinny Ci wystarczyć do implementacji zadania, TDD
K.....7
K.....7
@Kuzguwu: są podobno dwie szkoły, gdzie atomowo testuje się funkcjonalności, czyli londyńska i ta druga gdzie testuje się całość jakiegoś komponentu, jeśli projekt stosuje się do danej metody pisania testów to warto się trzymać tej metody w obrębie całego projektu
Jurix
Jurix
Jurix
0
@KKK1337: przecież testowanie całości komponentu to nie unit test. To nie jest inna szkoła tylko inny rodzaj testu.
K.....7
K.....7
Jurix
Jurix
Jurix
0
@KKK1337: napisałeś "testowanie komponentu" i brzmiało to jak test integracyjny.

Jeśli chodzi o sam test to mi ciężko byłoby ocenić jakość tego testu bez zobaczenia klasy, czy na pewno cała logika w niej zawarta jest otestowana. Może to osoba robiąca CR miała na myśli.

Plus nazwy testów mało mówią, wolę konwencję gdzie testy są częścią dokumentacji, ale to zależy od teamu w jakim pracujesz.
Saly
Saly
0
@Jurix: nie ma jasnej definicji unita, to może być linia kodu jak i 10 milionów
Jurix
Jurix
Jurix
0
@Saly: ale ja nie mówię o długości kodu, bo to z tym się zgadzam, ale to co test sprawdza. Jeśli sprawdza integrację między klasami - jest to test integracyjny, jeśli testuje logikę 1 klasy, jest to test jednostkowy.
Jurix
Jurix
Jurix
0
@Saly:

Test jednostkowy (ang. unit test) – metoda testowania tworzonego oprogramowania poprzez wykonywanie testów weryfikujących poprawność działania pojedynczych elementów (jednostek) programu – np. metod lub obiektów.


https://pl.wikipedia.org/wiki/Test_jednostkowy
Jurix
Jurix
Jurix
0
@Saly: Dlatego nie sprowadzałbym tego do absurdu tylko do globalnie przyjętego konsensusu, jakim jest testowanie pojedynczych klas/metod :P
Jurix
Jurix
Jurix
0
@Saly: Zdefiniować coś może każdy. Ja podałem pierwszą lepszą, z polskiej wiki. Istnieje? Istnieje.

Generalnie może masz rację i test 1 modułu być może zostać nazwany testem jednostkowym, pytanie na ile framework którego używamy to wspiera i czy wszyscy w naszym zespole (i osoby które do niego dołączą) zrozumieją przyjętą konwencję.