jak poprawic istniejacy test zeby zadziałał

Odpowiedz Nowy wątek
2019-04-15 17:59
0

Mam taka klase, ktora sobie testuje:
https://paste.ofcode.org/hTDARqUZqmmmgrur4shaRT

test:

@RunWith(MockitoJUnitRunner.class)
public class ModelCreatorTest {

    @Mock
    private RestTemplate mockRestTemplate;
    @Mock
    private UriBuilderHelper mockUriBuilderHelper;

    private ModelCreator modelCreatorUnderTest;

    @Before
    public void setUp() {
        initMocks(this);
        modelCreatorUnderTest = new ModelCreator(mockRestTemplate, mockUriBuilderHelper);
    }

    @Test
    public void testGitDetailsInformation() throws Exception {
        // Setup
        final String owner = "owner";
        final String repository = "repository";

        String fakeString = "test";
        Date date = new Date();
        GitModelDetailsDto expectedResult = new GitModelDetailsDto(fakeString, fakeString, fakeString, fakeString, date);

        when(mockRestTemplate.getForEntity("uri", GitModelDetailsDto.class)).thenReturn(GitModelDetailsDto.class);
        when(mockUriBuilderHelper.uriBuilder("owner", "repositoryName")).thenReturn("result");

        // Run the test
        final GitModelDetailsDto result = modelCreatorUnderTest.gitDetailsInformation(owner, repository);

        // Verify the results
        assertEquals(expectedResult, result);
    }
}

Problem mam z dwoma linijkami gdzie jest when

Pozostało 580 znaków

2019-04-15 20:15
0

Problem to ja mam z całym tym kodem i testem, ale spoko, pewnie się da uratować.

Musisz tylko odpowiedzieź an jedno ważne pytanie: co chcesz przestestować?.

Możemy sobie, dla oszczedzenia czasu odpuścić "zabawną" wymianę zdań, kiedy napiszesz, że chcesz przetestować metodę gitDetailsInformation, a ja (lub ktoś inny) odpisze, że jednak, na pewno nie.
Kombinuj. Jak wykombinujesz to pewnie będziesz wiedział co zrobić.


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 2x, ostatnio: jarekr000000, 2019-04-15 20:16

Pozostało 580 znaków

2019-04-15 21:09
0

@jarekr000000 mojego punktu widzenia najważniejsze jest, żeby ta metoda zwracała obiekt typu GitModelDetailsDto oraz rzucic wyjątek jeśli nic nie jest zwracane. Wszelkie inne sugestie dotyczące kodu chętnie wysłucham:)

Pozostało 580 znaków

2019-04-15 21:17
0

żeby ta metoda zwracała obiekt typu GitModelDetailsDto
Jeśli spojrzysz na sygnaturę tej metody to raczej ciężko żeby coś innego zwracała. Ten test już masz załatwiony przez kompilator.
Wymyśl coś trudniejszego.
(Nulla odrzucam, zakładam, że nie pracujesz z nulltystami).


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.

Pozostało 580 znaków

2019-04-15 22:33
0

@jarekr000000
mam też logikę mapowanie jednych wartości z restemplate do obiektu dto, może to powinienem przetestować?

Pozostało 580 znaków

2019-04-15 22:38
0
masjav napisał(a):

@jarekr000000
mam też logikę mapowanie jednych wartości z restemplate do obiektu dto, może to powinienem przetestować?

To już lepszy kierunek. Nie wiadomo czy zupełnie sensowny,

Dodatkowy hint:
Wskaż miejsce w twoim kodzie, gdzie znajduje się jakaś logika.

Przy okazji: twoje użycie Optional jest ( w najlepszym przypadku ) zbędne.


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 3x, ostatnio: jarekr000000, 2019-04-15 22:41

Pozostało 580 znaków

2019-04-15 22:48
0

@jarekr000000 dziękuję za wskazówkę, logika zawiera się jeszcze tylko w cacheEvict (mogę przetestować czy wartości się cachują )oraz URI- ale to już rzecz bardzo standardowa i zakładam że URI builder jest przetestowany. Dobry kierunek?

Pozostało 580 znaków

2019-04-15 22:59
0

No to jakby się sprawa rypła. Bo jesli zależy Ci na tym potestowaniu Cache (co ma sens). To wtedy musisz odpalać testy razem z kontekstem Springowym.
Ale tu nie pomogę, bo akurat nie chcę tego raka (Springa i adnotacji) rozświewać. I tak już jest wsytarcająco dużo.


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.

Pozostało 580 znaków

2019-04-15 23:10
0

@jarekr000000: a z Twojego punktu widzenia oprócz rzeczy, o których wspomniałem co jeszcze powinienem sprawdzić używając testów jednostkowych?

Pozostało 580 znaków

2019-04-15 23:20
3

Nie wiem, zależy czego potrzebujesz.

Ja sobie radzę tak:

  1. najpierw stwierdzam (bywa że) - czegoś potrzebuje.
  2. potem pisze test - jakby to miało działać - wymyślam api.
  3. potem piszę implementację.
  4. potem kasuje i daję juniorowi do zrobienia, przynajmniej będzie działało

pojęcie testów jednostkowych mam w głębokim poważaniu. To jakiś nonsens (w sensie nie widzę przydatności terminu). W kodzie mam po prostu testy na różnym poziomie abstrakcji - część niskopoziomowych kwalifikuje sie jako jednostkowe, a od jakiegoś poziomu te testy przechodzą w intgracyjne. Ale nie widzę różnicy - piszę je dokładnie tak samo. (given, when,then).

EDIT:
kilka razy już pisaliśmy na tym forum - nie testujemy metod, klas ani pakietów. Testujemy poszczególne funkcje (własności) - czyli inaczej - oczekiwania.
U Ciebe oczekiwanie, że Cache zadziała i nie bedzie zbędnych wywołań Github jest sensowną rzeczą do sprawdzenia/ testem.


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 4x, ostatnio: jarekr000000, 2019-04-15 23:23
Ale co kasujesz i dajesz juniorowi? :D napisanie testu? - Pinek 2019-04-17 19:58
@Pinek - implementacje. Przy okazji : Dostałem już dwa razy oficjalne zjebki za to, że kluczowe częsci systemu (a nawet architektura) zostały napisane przez juniora (IMO juniora tylko z nazwy). Moim zdaniem za każdym razem dobrze wyszło i jest w tym pewna filozofia (robię to specjalnie i dość często, tylko nie zawsze dostaje zjebki). - jarekr000000 2019-04-17 20:03
@jarekr000000: bądź moim mentorem w firmie xdddd - Pinek 2019-04-17 20:04
strzelam, że niestety będzie problem z kasą. mam strasznie duże koszty prawie stałe. - jarekr000000 2019-04-17 20:08
bardziej myślałem o tym, żeby kiedyś trafić do twojej firmy :D - Pinek 2019-04-17 20:11
Wcale mogło by nie być tak fajnie. To fakt, że kilku programistów mówiło, że się mocno nauczyli, ale z drugiej też strony jestem straszny, robię bugi na produkcji i daję wypowiedzenia :-/ - jarekr000000 2019-04-17 20:52

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot