Dzisiaj nauczyłem się Testowania Setterów i Getterów :)
Dzisiaj nauczyłem się, jak testować Settery i Gettery - konstruktorów, na razie nie odważam się jeszcze testować, wierzę, że działają :)
Napotkałem się na opinie ludzi, że to bez sensu testowac Settery i Gettery i w sumie, to ogólnie w pracy pewnie tak, ale że ja mam cel nauczyć się jak najwięcej, to jadę ze wszystkim od początku do samego końca i nie, że tylko raz sobie przetestuje, tylko stworzyłem kilka klas - 6 - w których każda ma 4 atrybuty i do każdego jest Setter i Getter.
Ktoś się zapyta, no ale na jaką cholerę tyle pisać w kółko tego samego? A no jak dla mnie na taką, jak powiedział Bruce Lee:
To jest ze StackOverflow, napisane przez: Makoto -dzięki! Jak sobie patrzyłem na ten kod, to wiele tam nowych rzeczy, bo to jest tzw. refleksja i to się rządzi swoimi prawami. Żeby dobrze to zrozumieć, trzeba poszczególne elementy wrzucić na googla i rzecz jasna samemu napisać kod, inaczej nie rozumiałem, a i tak z tym lekko nie było. Najbardziej kontrowersyjna dla mnie była część o exceptionach, czyli
To tyle ode mnie, a jaką naukę Tobie przyniósł dzisiejszy dzień?
Napotkałem się na opinie ludzi, że to bez sensu testowac Settery i Gettery i w sumie, to ogólnie w pracy pewnie tak, ale że ja mam cel nauczyć się jak najwięcej, to jadę ze wszystkim od początku do samego końca i nie, że tylko raz sobie przetestuje, tylko stworzyłem kilka klas - 6 - w których każda ma 4 atrybuty i do każdego jest Setter i Getter.
Ktoś się zapyta, no ale na jaką cholerę tyle pisać w kółko tego samego? A no jak dla mnie na taką, jak powiedział Bruce Lee:
Nie boję się tego, co zna 10 000 ciosów, tylko tego, co 10 000 razy ćwiczył jeden cios.Więc po mojemu to jest sens i dlatego to robię. Oto jak skutecznie testować Settery i Gettery:
public class PlainOldJavaObjectTest {
@Test
public void testSetter_setsProperly() throws NoSuchFieldException, IllegalAccessException {
//given
final PlainOldJavaObject pojo = new PlainOldJavaObject();
//when
pojo.setValue("foo");
//then
final Field field = pojo.getClass().getDeclaredField("value");
field.setAccessible(true);
assertEquals(field.get(pojo), "foo");
}
@Test
public void testGetter_getsValue() throws NoSuchFieldException, IllegalAccessException {
//given
final PlainOldJavaObject pojo = new PlainOldJavaObject();
final Field field = pojo.getClass().getDeclaredField("value");
field.setAccessible(true);
field.set(pojo, "magic_values");
//when
final String result = pojo.getValue();
//then
assertEquals(result, "magic_values");
}
}
To jest ze StackOverflow, napisane przez: Makoto -dzięki! Jak sobie patrzyłem na ten kod, to wiele tam nowych rzeczy, bo to jest tzw. refleksja i to się rządzi swoimi prawami. Żeby dobrze to zrozumieć, trzeba poszczególne elementy wrzucić na googla i rzecz jasna samemu napisać kod, inaczej nie rozumiałem, a i tak z tym lekko nie było. Najbardziej kontrowersyjna dla mnie była część o exceptionach, czyli
NoSuchFieldExceptioni
IllegalAccessExceptionNie wiedziałem po co są, to nie pisałem, aż InteliJ mi podkreślił na czerwono
getDeclaredFieldi
field.get(pojo)więc już wiem po co to jest. Ogólnie to jestem zdziwiony, że taki Setter i Getter, a takie skomplikowane testowanie. ps. A i od razu mówię, że testowanie setterów przez gettery w jednym teście nie jest zbytnio właściwe, bo przecież test ma testować jednostkę, pojedyńczo każdą metodę, a nie wszystko na raz, no bo jak nie zadziała, to jak sprawdzić co nie działa?
To tyle ode mnie, a jaką naukę Tobie przyniósł dzisiejszy dzień?
Komentarze
Prześlij komentarz