@F3NRIR: nie, tylko warto nabrać intuicji "czy jak test nie przejdzie to ja/ktoś będzie w stanie w miarę szybko ogarnąć co nie działa?". Takie zbiórcze asercje jak np. porówanie outputów z jakiegoś ls są o tyle dobre, że pokazują cały wynik a nie składowe, przez co łatwiej analizować takie testy
Jest opcja, żeby jakoś napisać "expected" dla danego mocka?
Mam klasę testową, dziedziczącą po "CommonTest" i w commonie jest przygotowany mock.
W jednym teście używam wartości expected z commona, w drugim chcę innej. Jest jakaś opcja na to? Używam EasyMocków i PowerMocka. Nie ma opcji przeniesienia tego mocka wyżej. Jest EasyMock.reset, ale to stracę kupę zamochowanych zachowań, których tracić nie chcę :( #java #programowanie #junit #mockito
Zobrazowanie:

public class CommonTest{
...
expect(myMock.getName()).andReturn("Name").anyTimes();
#programowanie #java #spring #testowanieoprogramowania #junit

Polecicie jakiś tutorial do pisania testów jednostkowych aplikacji w Springu? (Najlepiej przy użyciu JUnit, Mockito.)

Większość tutoriali o testach skupia się na samym JUnit albo o tym jak w teorii pisać testy.
Samego JUnita nauczyć się jest łatwo, a teorię o tym jak i co powinno się testować to potem sobie doczytam.

Nie ogarniam trzech rzeczy:

1. Całej tej otoczki Springowej. (Samego Springa bez testów znam.)
via Wykop Mobilny (Android)
  • 2
@mk321: jak podnosisz context springowy to masz testy integracyjne. Oddzielne testy na kazda klase i testujesz wszystko co w danym pakiecie jest wystawione, a nie tylko publiczne metody. Junit4 skoro mowimy o runnerach, wwiec imo mockitorunner, albo dla jakichs utilsow to parametryzowany runner. Controllery sie testuje z mockmvc I controlleradvice wiec powinno tez walidacje i odpowiedzi na bledy pokryc.
via Wykop Mobilny (Android)
  • 2
@mk321: testuj logikę a nie czy springowe adnotacje działają, najlepiej też jak nic nie mockujesz

Jeśli testujesz metodę kontrolera który wola serwis który jedyne co robi to wola repo żeby zapisać encje - robisz to źle. W ten sposób przetestowales czy spring działa. Pracownicy pivotala pewnie się ucieszą z dodatkowego testu ( ͡° ͜ʖ ͡°)

Kluczem nie jest 100% coverage-u tylko mądre przetestowanie funkcjonalności, logiki biznesowej
tl;dr Do niedzieli prawie 200 devkursów od 19,90 zł. ( ͡° ͜ʖ ͡°) VP obchodzi 4 urodziny. W związku z tym jest fajna promocja na kursy wideo, które można nabyć do 23 czerwca od 19,90 zł do 39,90 zł LINK. Ja ze swojej strony mogę polecić następujące kursy:

Kurs #git 29,90 zł LINK

Ponad 87 procent respondentów używa tego systemu do przechowywania kodu. Dzięki swojej popularności Git
tomaszs - tl;dr Do niedzieli prawie 200 devkursów od 19,90 zł. ( ͡° ͜ʖ ͡°) VP obchodz...

źródło: comment_zbCmjWgNg7z8T1UZ8eA4OtxETq3xwX0T.jpg

Pobierz
Trochę darmowych i tańszych kursów, ebooków i książek dla programistów:

1. 30% na ebooka Serverless na platformie Azure. Do końca dnia (29.04.2019) za 24,50 zł https://polishwords.com.pl/ebooki?view=promocje&id=225

2. 56% na ebooka jQuery. Tworzenie animowanych witryn internetowych i kurs wideo. Do końca tygodnia (05.05.2019) za 39,90zł https://polishwords.com.pl/ebooki?view=promocje&id=231

3. Naładuj swój tablet na majówkę! Videokursy już od 19.90zł! https://helion.pl/page/3425Y/promocje #python #docker #git #react #java #csharp #jezykangielski #angular #django #archicad #linux #wordpress #adwords #sass #spring #
tomaszs - Trochę darmowych i tańszych kursów, ebooków i książek dla programistów:

...

źródło: comment_2O5SWNmdUVPI4yJWKol72mFPwralidx4.jpg

Pobierz
#java #junit #programowanie #ksiazki #sprzedam #naukaprogramowania

Książka nowa, sprzedam osobiście w #torun lub wysyłka. Wydanie z 2017.

What You Will Learn:

Write tests the JUnit 5 way

Run your tests from within your IDE

Integrate tests with your build and static analysis tools

Migrate from JUnit 4 to JUnit 5


https://www.amazon.com/Java-Unit-Testing-JUnit-Development/dp/1484230140
szczesliwa_patelnia - #java #junit #programowanie #ksiazki #sprzedam #naukaprogramowa...

źródło: comment_ZWZXmtPKFzBqdbB0PWIlntsJhf1GoyNK.jpg

Pobierz
Mirki - jak mogę przekazać parametr z testów junit do Jenkinsa a dalej na Slacka?

Chodzi o to, że testuje sobie zwrotki z API, w zwrotce mam pewną wartość np. "6879". Teraz chce ją wyciągnąć z tej zwrotki i w jakiś magiczny sposób wypchać info o niej na Slacka.

Ma ktoś jakiś pomysł? Ta liczba ciągle się zmienia tak btw, dlatego potrzebuje ją wyciągać przy każdym teście.

Z góry dziękuję za wszelkie
Muszę stworzyć na szybko monitoring opóźnienia bazy danych - strzelam do dwóch endpointów i weryfikuje czy odpowiedzi się zgadzają, jeśli tak to daje powiadomienie "Live", jeśli nie to "Delay".

Widzę to tak, że Jenkins puszcza mi testy junit co minutę i później zależnie od wyniku daje informację o tym, że coś działa albo nie.

TYLKO - jak obsłużyć takie powiadomienia w Junit? W sensie jeśli test przejdzie to daj takie info, a
@damianbeat: powiadomienia to raczej tak jak mówi @nesti32 , w jenkinsie. Masz nawet dedykowane pluginy do junita (https://wiki.jenkins.io/display/JENKINS/JUnit+Plugin - ostatnio słabo działa wiki, ale działa :P cierpliwośći). Poza tym trochę słabe używać jenkinsa do monitoringu co minutę. Nie możesz triggerować tego z poziomu systemu monitoringu? Wrzucić to do jakiegoś skryptu i zapnij jako external script w zabbiksie, etc.

Dodatkowo - jaka baza? Zamiast monitorować opóźnienia aktywnie próbkująć sztucznym ruchem lepiej
@damianbeat: ah, no i nie musisz mieć koniecznie junita, jak przeniesiesz logikę tego zapytania na bazę i wrzucisz w jakąś procedurkę składowaną, to możesz to sobie sprowadzić do postaci zerojedynkowej, albo zwracać tylko liczbę (czas opóźnienia), etc. Wtedy jest to łatwo podpiąć pod każdy monitoring.
@cypo: Sorki że znowu zawracam głowę, ale przebudowałem trochę ten projekt i udało mi się wszystkie głosy wcisnąć w jedną klasę chociaż nie jestem pewny czy to dobry pomysł. Dodałem też pakiet profile z controllerem i servisem, który woła do innych serwisów po dane, bo jednak te endpointy nie pasowały do userController, a nie chciałem ich rozrzucać po wszystkich klasach. Teraz serwisy komunikują się tylko z innymi serwisami i z repository
@Cheessys: Widzę progres. Chcę zobaczyć wszystko o postach, wchodzę w pakiet z postami i znajduję tylko to. Przy zależnościach między serwisami trzeba uważać tylko na cykle (nie może być referencji w dwie strony).
Jeszcze np. tagi zostały w user service i możesz się zastanowić, ile zależności między pakietami (serwisami z różnych pakietów) można zlikwidować.
Spotkasz jeszcze dużo projektów pisanych bez przemyślenia struktury (wielkie pakiety controller, services itp), ale zastanów się teraz,
#programowanie #java #junit
Koledzy, uczę się pisać testy jednostkowe ale mam z tym problemy. Po pierwsze nie wiem czy rozumuję w sposób prawidłowy dlatego prosiłbym na zerknięcie na przypadek który chcę przetestować (domyślam się, że dla testowanej metody, która dodaje trening do dnia, będę musiał zrobić trzy przypadki). Druga sprawa nie mam zielonego pojęcia dlaczego w linii 56 (w tym linku) wywala mi NullPointerException. Prosiłbym o rady bo na razie mimo
@krasnoludkolo: @losowyNickk: odnośnie testów i sytuacji z jaką próbuję sobie poradzić to jeszcze taka sytuacja: https://paste.ofcode.org/FduL8AnzkUULx8YRfEKCjj i w tym przypadku błąd mam zapewne w when...

Błąd:
You cannot use argument matchers outside of verification or stubbing.
Examples of correct usage of argument matchers:
when(mock.get(anyInt())).thenReturn(null);
doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject());
verify(mock).someMethod(contains("foo"))

Also, this error might show up because you use argument matchers with methods that cannot be mocked.
Following methods *cannot* be stubbed/verified: final/private/equals()/hashCode().
#junit #java

Mirki, mam rulę w Junit która mi czyści pewne rzeczy po każdym teście. Czy możliwe, żeby @AfterTest nie zdążyła się wykonać w całości przed kolejnym testem? Uruchamiając pojedyncze testy wszystko działa. Uruchamiając wszystkie lokalnie - działa. Na środowisku się wysypuje kilka testów.
Jak dam Thread.sleep na sekundę w metodzie @AfterTest w klasie ruli - wtedy przechodzą wszystkie. Tak jakby nie zdążyło wszystkiego pokasować przed kolejnym testem.
Czy to możliwe?
#spring #junit #testy

Mirki, mam dziwny problem.
Mam test integracyjny w mojej apce w springu. Test zawiera kilkanaście testów - gdzie postuje pod mój endpoint jsona z danymi. W większości testów jest to ten sam json - a po stronie aplikacji na pewno wszystko działa.

Jeden z testów jest @Transactional. Przed każdym testem czyszczę potrzebne repozytoria: repo1.deleteAll() repo2.deleteAll().
Wszystko przechodzi i działa. Sprawdzane na laptopie - przechodzi w 100% przypadków.
Na
Mirki - czemu mi to nie działa? ( ͡° ʖ̯ ͡°)

Piszę testy automatyczne api (Rest Assured + junit + maven + maven-surefire-plugin). Próbuję sobie odpalić część testów na podstawie fragmentu tekstu z nazwy klasy. Niestety - tylko dwie klasy z pięciu się odpalają. Pod spodem nazwy klas a w komentarzu część odpowiadająca za surefire plugin.

Błagam - jeśli ktoś ma jakiś pomysł, cokolwiek - piszcie. :)

ps.
damianbeat - Mirki - czemu mi to nie działa? ( ͡° ʖ̯ ͡°)

Piszę testy automatyczne ...

źródło: comment_PBLoucVYpwh1aJiPGkREOXK0ALQB66HD.jpg

Pobierz
#java #junit #spring

Mirki, na jakiej zasadzie odpalane są testy w Junit? Mam podstawowy projekt mavenowy w spring boot. Testując pewną funkcjonalność mam @Before, który przy każdym test case czyści bazę. Raz na jakieś 100 uruchomień w jednym z tych testów ilość elementów w bazie jest równa 2 (choć dodaje się jeden element, więc tak jakby w tym czasie inny test dodał jakiś element do db).
Metoda z adnotacja @After powinna kompensowac wszelkie @Before. W zalozeniu oczywiscie ze nie poleci zaden nieobsluzony runtime exception. Ewentualnie przedebugguj jakis przebieg testow zeby wysledzic co tam sie dzieje niedobrego (jakis conditional breakpoint np.). Jedyne co do odpalania testow JUnit, to szeregowanie testow jest przypadkowe, wiec nie mozna polegac na jakims specjalnym porzadku, by testy sie powodzily.
Mirki, chciałbym w klasie testowej (junit) stworzyć własną adnotację. Ma to działać tak: Definiuje sobie na początku obiekt. Przy każdym teście daje adnotacje @shouldreturn(wartoscPola 1 = wartosc, wartoscPola2 = wartosc). Adnotacja ma ustawiać takie wartości dla obiektu.
Aktualnie przy każdym teście kilkukrotnie muszę wpisywać : when.Obiekt.metoda.thenReturn -> chciałbym to ustawiać przez adnotacje.

Jak najepiej to zrobić?

#java #junit
@wykopowy_tester: @test_user: zastanawiam sie czy OP przypadkiem nie jest na etapie pisania kodu poruszającego sie po aplikacji, a do samych testów jeszcze nie doszedł ale użył juz metod setUp i tearDown. Chce pisać dalej kod ale przeglądarka mu sie zamyka.
@damianbeat: tak jak juz ktoś pisał, zakomentuj driver.quit() chociaż ja na takim etapie zawsze mam otwarta aplikacje w innym oknie i manualnie sie po niej poruszam