Haskell:
Pisanie testów
Jak to zrobić:
Haskell obsługuje różne frameworki do testowania, ale dwa popularne to Hspec i QuickCheck. Hspec pozwala definiować ludzko czytelne specyfikacje dla twojego kodu, podczas gdy QuickCheck pozwala automatycznie generować testy, opisując właściwości, które twój kod powinien spełniać.
Korzystanie z Hspec
Najpierw dodaj hspec do konfiguracji narzędzia budującego (np. stack.yaml lub plik cabal). Następnie zaimportuj Test.Hspec i napisz testy jako specyfikacje:
-- file: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)
main :: IO ()
main = hspec $ describe "MyLib.add" $ do
it "dodaje dwie liczby" $
add 1 2 `shouldBe` 3
it "zwraca pierwszą liczbę przy dodawaniu zera" $
add 5 0 `shouldBe` 5Następnie uruchom swoje testy za pomocą narzędzia budującego, co może dać taki wynik:
MyLib.add
- dodaje dwie liczby
- zwraca pierwszą liczbę przy dodawaniu zera
Zakończono w 0.0001 sekundy
2 przykłady, 0 porażekKorzystanie z QuickCheck
Z QuickCheck wyrażasz właściwości, które twoje funkcje powinny spełniać. Dodaj QuickCheck do konfiguracji projektu, a następnie zaimportuj go:
-- file: test/MyLibProperties.hs
import Test.QuickCheck
import MyLib (add)
prop_addAssociative :: Int -> Int -> Int -> Bool
prop_addAssociative x y z = x + (y + z) == (x + y) + z
prop_addCommutative :: Int -> Int -> Bool
prop_addCommutative x y = x + y == y + x
main :: IO ()
main = do
quickCheck prop_addAssociative
quickCheck prop_addCommutativeUruchomienie tych testów będzie automatycznie generowało dane wejściowe do sprawdzenia określonych właściwości:
+++ OK, przeszło 100 testów.
+++ OK, przeszło 100 testów.W przykładach zarówno z Hspec, jak i QuickCheck, zestawy testów służą jako wykonywalna dokumentacja, która może automatycznie weryfikować poprawność Twojego kodu.