2009-10-31 22 views
8

Próbowałem dowiedzieć się, czy istnieje już zaakceptowana metoda testowania operacji plików io w Haskell, ale muszę jeszcze znaleźć wszelkie informacje, które są przydatne dla tego, co próbuję zrobić.Haskell IO Testowanie

Piszę małą bibliotekę, która wykonuje różne operacje systemu plików (rekursywnie przechodzić przez katalog i zwracać listę wszystkich plików, synchronizować wiele katalogów tak, aby każdy katalog zawierał te same pliki, używając i-węzłów jako testu równości i twardych linków. ..) i chcę się upewnić, że faktycznie działają, ale jedynym sposobem, w jaki mogę je przetestować, jest utworzenie katalogu tymczasowego o znanej strukturze i porównanie wyników z funkcjami wykonywanymi w tym katalogu tymczasowym ze znanymi wyniki. Chodzi o to, że chciałbym uzyskać jak najwięcej informacji testowych, jednocześnie będąc głównie zautomatyzowanym: nie chcę tworzyć ręcznie struktury katalogów.

Szukałem google i hackage, ale paczki, które widziałem w hackage, nie używają żadnych testów - może właśnie wybrałem niewłaściwe - i wszystko, co znajduję w Google, nie zajmuje się testowaniem IO.

Każda pomoc będzie mile widziane

Dzięki, James

Odpowiedz

2

Może znajdziesz sposób, aby this pracy dla Ciebie.

EDIT:

pakiety, które widziałem na hackage nie używać wszelkich testów

znalazłem an unit testing framework dla Haskell na Hackage. Uwzględniając to środowisko, być może możesz użyć asercji, aby sprawdzić, czy wymagane pliki są obecne w katalogach, które chcesz, i odpowiadają ich zamierzonemu celowi.

+0

Dziękuję za link, ale przeczytałem tę stronę wcześniej i wydaje się, że jest to tylko dla czystych funkcji, a teraz jestem zainteresowany testowaniem nieczystych części moich funkcji. Dziękuję za link: –

+0

Ya, miałem zamiar używać HUnit i jakiegoś wyższego szkieletu, takiego jak framework testowy. Co mnie bardziej interesuje, to czy jest jakiś sposób na stworzenie sfałszowanej struktury katalogów wirtualnych i przechwycenie wywołań do systemu plików w celu wskazania katalogu wirtualnego, czy też może istnieje framework, który automatycznie wygenerowałby tymczasowy katalog? struktura katalogów do użycia ... W porządku, myślę, że wpadłem na pomysł, żeby stworzyć małą ramkę, która powinna być dość trywialna, aby zaimplementować Dziękuję. –

1

Nie ma powodu, dla którego kod testowy nie może utworzyć katalogu tymczasowego i sprawdzić jego zawartość po uruchomieniu nieczytelnego kodu.

+0

To jest miejsce, w którym prawdopodobnie skończę , Chciałem tylko wiedzieć, czy istnieje jakiś standardowy sposób przeprowadzania takich kontroli, dziękuję jednak, –

+0

To jest tak, jak powinieneś to zrobić. Struktura folderów/plików to twoje dane testowe, struktura po operacji jest wynikiem twojego testu. Musisz przygotować go do testów. Jeśli nie chcesz tworzyć go ręcznie, użyj podstawowych funkcji IO Haskell, aby utworzyć tę strukturę w testSetUp, a po zakończeniu testów usuniesz ją w testTearDown. Lub w zasadzie utworzyć przed testem, usuń po teście. – yoosiba

2

HUnit jest zwykłą biblioteką do testów opartych na IO. Nie znam zestawu właściwości/kombinatorów dla akcji plików - byłoby to użyteczne.

+0

W porządku, wygląda na to, że muszę coś wymyślić. Dziękuję za odpowiedź. –

1

Jeśli chcesz głównie zautomatyzowane testowanie monadycznego kodu, możesz zajrzeć do Monadic QuickCheck. Można zanotować właściwości, które naszym zdaniem powinny być prawdziwe, takie jak

  • Jeśli utworzyć plik z pozwoleniem odczytu, to będzie możliwe otwarcie pliku do odczytu.

  • Jeśli usuniesz plik, nie otworzy się.

  • Cokolwiek myślisz ...

QuickCheck następnie generuje losowe testy.

+0

Dzięki za link, sprawdzę to. –

+0

Odbywa się to w sposób kontrolowany, dzięki czemu np. usunięty plik nie został trwale usunięty? – amindfv

+0

Ktoś inny ma teraz kontrolę nad domeną chalmers.se. – dg123

Powiązane problemy