Skip to content

Instantly share code, notes, and snippets.

@szpak
Last active June 7, 2021 20:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save szpak/f7517c7c327dc3a7b59f to your computer and use it in GitHub Desktop.
Save szpak/f7517c7c327dc3a7b59f to your computer and use it in GitHub Desktop.

TDD z Eclipse

Przydatne pluginy

Wymagane w czasie ćwiczeń

Opcjonalne

Konfiguracja

Lepsze podpowiadanie statycznych importów:

Window -> Preferences -> Java -> Editor -> Content Assist -> Favorites

Warto dodać:

org.assertj.core.api.Assertions

org.junit.jupiter.api.Assertions

org.mockito.BDDMockito
org.mockito.Mockito
org.mockito.Matchers

junitparams.JUnitParamsRunner

(Eclipse automatycznie doda .* na końcu)

Więcej informacji: http://stackoverflow.com/questions/288861/eclipse-optimize-imports-to-include-static-imports

Lepszy szablon metody testowej

JUnit 5

Window -> Preferences -> Java -> Editor -> Templates

Tworzymy lub modyfikujemy istniejący szablon test (JUnit 5) na coś podobnego do:

@Test
public void should${someMeaningfulName}() {
    //given
    ${cursor}
    //when
    //then

}${:import(org.junit.jupiter.api.Test)}

Więcej informacji: https://howtodoinjava.com/junit5/code-test-templates-eclipse/

JUnit 4 (opcjonalnie - do starszych projektów przed migracją)

Window -> Preferences -> Java -> Editor -> Templates

Istniejący szablon test zmieniamy na coś podobnego do:

@Test
public void should${someMeaningfulName}() {
    //given
    ${cursor}
    //when
    //then

}${:import(org.junit.Test)}

Więcej informacji: http://www.macluq.com/2013/01/07/eclipse-template-to-insert-test-methods-should-given-when-then/

Lepsza konfiguracja przełączania test<->sut w pluginie MoreUnit

Window -> Preferences -> MoreUnit -> Java

W polu Pattern zmieniamy ${srcFile}Test na ${srcFile}*Test.

Dzięki tej zmianie obsługiwane będzie przełączanie między klasą produkcyjną a testami przy więcej niż jednej klasie testowej (np. MagicHat i testy MagicHatTest oraz MagicHatIntegTest).

Bardziej rozsądna maksymalna długość linii w edytorze

Ograniczenie 80 znaków miało swoje uzasadnienie historyczne, jednak obecnie większość edytuje kod Java w IDE w trybie graficznym na monitorach/wyświetlaczach mieszczących znacznie więcej linii. Sensowna wydaje się zmiana ustawień z domyślnych 80 na 120 lub (wedle preferencji) nawet na 150 znaków, aby w przypadku użycia automatycznego formatowania nie przeżyć rozczarowania.

Java -> Code Style -> Formatter -> New... -> "Long lines" -> OK ->
        Line Wrapping -> Maximum line width -> 120 -> OK

Kodowanie UTF-8 dla plików (potrzebne tylko przy Windows)

Wszystkie pliki w przekazanych przykładach są kodowane w UTF-8. Aby uniknąć problemów z komentarzami w języku polskim pod systemem Windows należy zmienić kodowanie na UTF-8 (Eclipse domyślnie zakłada kodowanie systemowe - Windows 1250).

Window -> Preferences -> General -> Workspace -> Text file encoding

Konfiguracja proxy dla Gradle

W celu umożłiwienia działania Gradle (Wrappera) w środowisku wymuszającym dostępu do internetu za pomocą proxy należy ustawiać zmienne systemowe definiujące ten serwer: http.proxyHost, http.proxyPort, http.proxyUser i http.proxyPassword.

Alternatywnie można dane te skonfigurować w pliku ~/.gradle/gradle.properties:

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=password

Uwaga! Przy korzystaniu z pliku gradle.properties trzeba pamiętać o prefiksie systemProp..

Uwaga2 Trzymanie hasła domenowego w niezaszyfrowanej postaci na dysku tworzy ryzyko związane z bezpieczeństwem

Wybrane skróty

  • CTRL-SHIFT-M - zamień konstrukcję Assertions.assertThat(...) na statyczny import
  • CTRL-J - przeskocz między testem a kodem klasy (More Unit)
  • CTRL-R - szybkie uruchamianie bieżącego testu (More Unit)
  • CTRL-E - przeskok między ostatnio używanymi klasami

Ciekawe biblioteki

Potencjalnie mniej znane ciekawe biblioteki wykorzystane w czasie szkolenia:

  • AssertJ - rozbudowany zestaw assersji

Informacje licencyjne

Autor: Marcin Zajączkowski. Utwór jest dostępny na licencji CC BY-SA 4.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment