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

testy metod ze zmieniającymi się danymi

Object Storage Arubacloud
0 głosów
156 wizyt
pytanie zadane 8 kwietnia 2021 w Java przez Lulex Użytkownik (820 p.)

Cześć. W jaki sposób mogę zrobić testy dla metod których wyniki będą się zmieniać? Nie wiem w sumie nawet jak to wygooglować aby znaleźć jakiś fajny artykuł/poradnik.

Chodzi o to, że mam poniższe metody które: pierwsza - znajduje mi wszystkie pliki z danym rozszerzeniem, druga liczy ile plików danego dnia było edytowanych, a trzecie w jaki dzień tygodnia ile plików powstało (+ metoda pomocniczna do wyciągania dnia):

public class FileService {
    public List<File> findFilesUsingSuffix(File root, String suffix) {
        List<File> list = new ArrayList<>();
        if (root.isDirectory()) {
            File[] files = root.listFiles();
            if (files != null) {
                for (File file : files) {
                    list.addAll(findFilesUsingSuffix(file, suffix));
                }
            }
        } else if (root.getName().endsWith(suffix)) {
            list.add(root);
        }
        return list;
    }

    public Map<String, Long> countModifiedFilesByWeekday(List<File> files) {
        Map<String, Long> map = new HashMap<>();
        for (File file : files) {
            Date d = new Date(file.lastModified());
            String day = getDay(d);
            map.merge(day, 1L, Long::sum);
        }
        return map;
    }

    public Map<String, Long> countCreatedFilesByWeekday(List<File> files) throws IOException {
        Map<String, Long> map = new HashMap<>();
        for (File file : files) {
            BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
            Date d = new Date(attr.creationTime().toMillis());
            String day = getDay(d);
            map.merge(day, 1L, Long::sum);
        }
        return map;
    }

    private String getDay(Date d) {
        DateFormat format2 = new SimpleDateFormat("EEEE");
        return format2.format(d);
    }
}

 

W jaki sposób mogę napisać do tego działające testy, które będą działać przy każdym odpaleniu progamu? 

2 odpowiedzi

+2 głosów
odpowiedź 8 kwietnia 2021 przez Comandeer Guru (600,710 p.)
W idealnym świecie obsługę systemu plików miałbyś w odpowiedniej klasie implementującej określony interfejs. Dzięki temu na czas testów mógłbyś podstawić klasę korzystającą z mockowych katalogów i plików.

W mniej idealnym świecie po prostu tworzyłbyś na czas testów jakiś katalog z plikami i na nich odpalał wszystkie testy.
+1 głos
odpowiedź 8 kwietnia 2021 przez Wiciorny Ekspert (269,590 p.)
Testowaniu podlega zachowanie metody, zalezy czy testujesz czarno-czy biało skrzynkowo, tzn.
istotą testu dla funkcji nie jest to jak działą wewnętrznie, gdyż nie testujesz kodu implementacyjnego, tylko jak działa rezultat.
Czyli mając dane na wejściu X- > wiemy jaki będzie f(x)- czyli coś na bazie odwzorowania funkcji. Tzn
Wiemy, że jeśli mamy mnożenie razy 2, to dla warunku początkowego np. liczby 4, rezuzltat oczekiwany musi byc 8 i tak powinno się testować.

TO samo w testach integracyjnych pomiedzy modułem/warstwą, spodziewamy się że jeśli np. dostajemy OBIEKT X- jest on zgodny, to rezultatem będzie odpowiedni status 200. np,

Podobne pytania

0 głosów
1 odpowiedź 399 wizyt
pytanie zadane 18 lipca 2021 w Java przez Lulex Użytkownik (820 p.)
0 głosów
2 odpowiedzi 132 wizyt
0 głosów
0 odpowiedzi 157 wizyt
pytanie zadane 12 lutego 2020 w C i C++ przez fff Gaduła (3,950 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...