• 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

VPS Starter Arubacloud
0 głosów
169 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 (604,060 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 (274,410 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ź 446 wizyt
pytanie zadane 18 lipca 2021 w Java przez Lulex Użytkownik (820 p.)
0 głosów
2 odpowiedzi 150 wizyt
0 głosów
0 odpowiedzi 174 wizyt
pytanie zadane 12 lutego 2020 w C i C++ przez fff Gaduła (3,950 p.)

92,782 zapytań

141,712 odpowiedzi

320,600 komentarzy

62,114 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

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!

...