Martin
Grześlowski
Student,
Politechnika
Wrocławska
Piotr T. Spring/Microservices
Temat: Mockowanie File w Mockito.
Martin Grześlowski:http://mockito.googlecode.com/svn/tags/1.8.0/javadoc/o...
Dokładniej chodzi mi o to że mój jeden obiekt ma taki o to konstruktor: public MyObject(File file) {...} i jakiego mocka mam mu przekazać (jak go stworzyć) Z góry dzięki za pomoc. Pozdrawiam Martin Grześlowski.
więc :
File file = mock(File.class);
MyObject object = new MyObject(file);
Martin
Grześlowski
Student,
Politechnika
Wrocławska
Temat: Mockowanie File w Mockito.
..Ten post został edytowany przez Autora dnia 14.12.15 o godzinie 11:23
Tomasz
D
Programista
Java/JEE, freelancer
Temat: Mockowanie File w Mockito.
Jak masz zamockowany obiekt to możesz użyć poniższego schematu:
when(yourMockObject.methodYouWantToCall()))
.thenReturn(valueYouWantToBeReturned);
czyli np.
Tomasz Dziurko edytował(a) ten post dnia 04.04.11 o godzinie 09:47
File file = mock(File.class);
when(file.getName()).thenReturn("AlaMaKota.txt");
Martin
Grześlowski
Student,
Politechnika
Wrocławska
Temat: Mockowanie File w Mockito.
...Ten post został edytowany przez Autora dnia 14.12.15 o godzinie 11:24
Tomasz
D
Programista
Java/JEE, freelancer
Temat: Mockowanie File w Mockito.
Jak widać to nie działasz bezpośrednio na pliku tylko na Scannerze, który pewnie wewnątrz otwiera strumień z tego pliku i coś na nim robi. Dlatego wydaje mi się, że nie powinieneś mockować pliku tylko jakiś inny obiekt i metodę, która jest Ci potrzebna do testów, ale to trudno powiedzieć bez wiedzy jaki masz konkretny problem i co chcesz przetestować :)konto usunięte
Temat: Mockowanie File w Mockito.
Martin Grześlowski:
Tak wiem ale chodzi mi o fizyczne zmockowanie zawartości pliku. Kod tego konstruktora wygląda podobnie do tego:
public MyObject(File file) {Martin Grześlowski edytował(a) ten post dnia 04.04.11 o godzinie 10:41
Scanner sc = new Scaneer(file);
poleMyObject = sc.nextInt();
[...]
}
Masz dwie opcje :
1)Szybka - Powermockito i mockujesz finalny scanner poprzez zmianę kodu binarnego.
2)Poprawna : Wyrób sobie podejście, że jeśli nie możesz w łatwy sposób przetestować kodu to coś z tym kodem jest zjebane.
W twoim przypadku naruszasz granice pomiędzy twoim systemem a systemem plików. Stwórz komponent odpowiedzialny za kontakt z zewnętrznym systemem: Ja nazywam je "Connectorami".
ów komponent (np. FileSystemConnector) jest łatwy do mockowania a on sam z definicji nie może być testowany jednostkowo gdyż wchodzi w domenę innego systemu, także do niego tworzysz test integracyjny, który używa już prawdziwego pliku.
Mam nadzieję , że przedstawiłem to wystarczająco jasno.
W razie pytań pisz.
Martin
Grześlowski
Student,
Politechnika
Wrocławska
Temat: Mockowanie File w Mockito.
...Ten post został edytowany przez Autora dnia 14.12.15 o godzinie 11:24konto usunięte
Temat: Mockowanie File w Mockito.
Martin Grześlowski:
Aha czyli już rozumiem. Klasa MyObject jest klasą jak ty to nazwałeś Connectorem (on przechowuje dane z pliku, niżej jest już Scanner i File) i nie niależy testować jej testami jednostkowymi tylko integracyjnymi
Dzięki :).
No nie do końca tak musi być. Nie podałeś jakiś jest zakres odpowiedzialności klasy MyObject. Z tego co widzę to przechowuje ona jakąś daną z pliku. W tym przypadku raczej albo ona powinna użyć connectora albo coś powinno ją zainicjalizować używając connectora (w zależności od podejścia).
pzdr
Martin
Grześlowski
Student,
Politechnika
Wrocławska
Temat: Mockowanie File w Mockito.
...Ten post został edytowany przez Autora dnia 14.12.15 o godzinie 11:24konto usunięte
Temat: Mockowanie File w Mockito.
Martin Grześlowski:(...)
Co by tu za dużo nie gadać o czymś co tylko ja widziałem wklejam kod tej klasy (usuwam ciała metod żeby nie zaśmiecać):
Moje pytanie dotyczyło dokładniej metody loadMap(File file).
I co wy na to?
No masz problemy z napisaniem testu jednostkowego bo projekt nie jest za dobry.
Żeby ci nie psuć zabawy z rozwiązania pracy domowej, masz tutaj tylko wskazówki:
http://en.wikipedia.org/wiki/Single_responsibility_pri...
http://www.mehdi-khalili.com/orm-anti-patterns-part-1-...
Martin
Grześlowski
Student,
Politechnika
Wrocławska
Temat: Mockowanie File w Mockito.
...Ten post został edytowany przez Autora dnia 14.12.15 o godzinie 11:24Następna dyskusja: