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

C# - Testowanie kodu używającego Thread.Sleep

Object Storage Arubacloud
0 głosów
153 wizyt
pytanie zadane 9 maja 2020 w C# przez dawid2002 Mądrala (5,190 p.)
otwarte ponownie 9 maja 2020 przez dawid2002

Witam! Z tego co mi wiadomo, testy jednostkowe powinny być szybkie (liczone co najwyżej w milisekundach) i przez te stwierdzenie zastanawiam się jak to się ma do metod, które używają Thread.Sleep. Załóżmy, że mamy na przykład taki przypadek:

void Metoda()
{
    Console.WriteLine("Pomyśl liczbę od 1 do 10 i zobaczymy czy zgadłeś")
    Thread.Sleep(5000);
    Console.WriteLine(random.Next(1, 11));
}

W tym przypadku wywołanie Thread.Sleep uznajmy za konieczne.

Moje pytanie brzmi: Czy testować taką metodę co ma Thread.Sleep? Czy może podczas testu użyć mocków i pominąć działanie Sleep, bądź sprawdzić z jakim parametrem został wywołany? Albo może przetestować to wszystko i sprawdzić jeszcze czy metoda wykonała się wystarczająco długo?

Z góry dziękuje za pomoc!

komentarz 9 maja 2020 przez Tomek Sochacki Ekspert (227,510 p.)
Zamokuj sobie timer i zasymuluj minięcie czasu 5000ms, ale najpierw zastanow się czy na pewno sleep jest konieczny.
komentarz 9 maja 2020 przez dawid2002 Mądrala (5,190 p.)

@Tomek Sochacki czyli mam rozumieć, że zamokować ten timer i sprawdzić czy wywołano metodę Sleep z parametrem 5000?

komentarz 9 maja 2020 przez Tomek Sochacki Ekspert (227,510 p.)
Nie, zasymuluj upływ 5000ms po wywolaniu metody, nie piszę w C wiec nie podam Co konretnen metody ale poczytaj o timerach w dokumentacji frameworka testowego jakiego używasz.

1 odpowiedź

0 głosów
odpowiedź 9 maja 2020 przez Siemił Mądrala (7,380 p.)
edycja 9 maja 2020 przez Siemił
Jest taka zasada: "Jesli do jakiejs metody nie mozesz napisac prostego testu to znaczy ze  jest zle napisana." Czy jakos tak. Kiedys chyba pytales jak testowac metody statyczne? Tutaj thread.sleep jest taka metoda.

Ale tak wogole co ta metoda ma zrobic? Co chcesz w niej przetestowac? Troche bez sensu.
komentarz 9 maja 2020 przez dawid2002 Mądrala (5,190 p.)
Dzięki, ale chyba coś wymyśle z mockami. Ta metoda to tylko taki przykład.

Podobne pytania

0 głosów
1 odpowiedź 223 wizyt
0 głosów
0 odpowiedzi 419 wizyt
pytanie zadane 19 kwietnia 2020 w C# przez dawid2002 Mądrala (5,190 p.)
0 głosów
0 odpowiedzi 148 wizyt

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 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!

...