Haskell:
Escrevendo testes
Como Fazer:
Haskell suporta vários frameworks de teste, mas dois populares são Hspec
e QuickCheck
. O Hspec permite que você defina especificações legíveis por humanos para o seu código, enquanto o QuickCheck permite gerar testes automaticamente descrevendo propriedades que seu código deve satisfazer.
Usando Hspec
Primeiro, adicione hspec
à configuração da sua ferramenta de build (por exemplo, stack.yaml
ou arquivo cabal
). Em seguida, importe Test.Hspec
e escreva testes como especificações:
-- arquivo: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)
main :: IO ()
main = hspec $ describe "MyLib.add" $ do
it "adiciona dois números" $
add 1 2 `shouldBe` 3
it "retorna o primeiro número quando adiciona zero" $
add 5 0 `shouldBe` 5
Então, execute seus testes usando sua ferramenta de build, resultando em uma saída que pode parecer com:
MyLib.add
- adiciona dois números
- retorna o primeiro número quando adiciona zero
Terminado em 0.0001 segundos
2 exemplos, 0 falhas
Usando QuickCheck
Com QuickCheck, você expressa propriedades que suas funções devem satisfazer. Adicione QuickCheck
à configuração do seu projeto e, em seguida, importe-o:
-- arquivo: 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_addCommutative
Executando esses testes, entradas são geradas automaticamente para verificar as propriedades especificadas:
+++ OK, passou em 100 testes.
+++ OK, passou em 100 testes.
Nos exemplos de tanto Hspec quanto QuickCheck, as suítes de testes servem como documentação executável que pode verificar automaticamente a correção do seu código.