• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

testy zapisu i odczytu json'a

42 Warsaw Coding Academy
+1 głos
367 wizyt
pytanie zadane 11 sierpnia 2021 w Java przez Lulex Użytkownik (820 p.)

Hej hej,

mam 2 metody - eksport listy różnych obiektów do pliku oraz ich odczyt i wrzucenie do listy:

 public static void exportToJson(List<Shape> list, String path) throws IOException {
        File file = new File(path);
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping();
        mapper.writeValue(new File(file.getName()), list);
    }
public static List<Shape> importFromJson(String path) throws IOException {
        File file = new File(path);
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping();
        return mapper.readValue(file, ArrayList.class);
    }

 

Chcę napisać do tego testy. Wyczytałem, że należy użyć, aby pliki po teście były kasowane

@Rule
    public TemporaryFolder temporaryFolder = new TemporaryFolder();

i zrobiłem coś takiego 

expectedFile = mock(File.class);
        when(expectedFile.getName()).thenReturn("file.json");
        temporaryFolder.newFile(expectedFile.getName());

Jednak co dalej powinienem zrobić, bo nie wiem jak dodać treść do tego pliku? Nie wiem czy w ogóle idę w dobrym kierunku. Generalnie zamysł mam taki, że do testowania eksportu porównam sobie plik który utworzy ta metoda z expectedResult, jednak jak zamockować treść expectedResult?

komentarz 12 sierpnia 2021 przez edutomek Dyskutant (8,380 p.)

Dwie luźne uwagi, tak z punktu widzenia nie-Javowca, gorącego zwolennika automatycznego testowania: rzecz jasna można testować operacje we/wy, pytanie tylko, czy jest to konieczne?

Zawartość samej listy (obiektu w pamięci), jak rozumiem, można łatwo zweryfikować. Zapis tej listy do pliku można rozbić na dwa etapy: (1) konwersja listy na napis, (2) zapis napisu do pliku. W drugą stronę analogicznie, tylko kolejność odwrotna.

W Javie już dawno nie pisałem, ale jestem gotów się założyć, że zapis napisu do pliku jest dostępny jako standardowa funkcja. Nie ma sensu tego testować. Można, co najwyżej, sprawdzić, czy Twoja funkcja wywołuje odpowiednie metody, w odpowiedni sposób (tutaj użyć mocków/stubów).

Odnośnie konwersji listy na napis, to pewnie też jest w standardzie, albo w jakiejś bibliotece - więc postąpiłbym analogicznie. No, chyba że sam to napisałeś - wtedy trzeba to przetestować.

komentarz 12 sierpnia 2021 przez Lulex Użytkownik (820 p.)
W sumie... to słuszna uwaga. Chciałem testować wbudowaną funkcję write i readValue.

Dzięki, zapędziłem się i chciałem testować wszystko po kolei... :D

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 317 wizyt
pytanie zadane 29 sierpnia 2021 w Java przez Lulex Użytkownik (820 p.)
0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 17 kwietnia 2021 w Java przez Lulex Użytkownik (820 p.)
0 głosów
1 odpowiedź 638 wizyt
pytanie zadane 18 lipca 2021 w Java przez Lulex Użytkownik (820 p.)

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...