Haskell:
테스트 작성하기

방법:

Haskell은 여러 테스팅 프레임워크를 지원하지만, HspecQuickCheck이라는 두 가지 인기 있는 프레임워크가 있습니다. Hspec을 사용하면 코드에 대한 인간이 읽을 수 있는 사양을 정의할 수 있고, QuickCheck을 사용하면 코드가 충족해야 하는 속성을 설명함으로써 테스트를 자동으로 생성할 수 있습니다.

Hspec 사용하기

먼저, 빌드 도구 설정(stack.yaml 또는 cabal 파일 등)에 hspec을 추가합니다. 그런 다음, Test.Hspec을 임포트하고 테스트를 사양으로 작성합니다:

-- file: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)

main :: IO ()
main = hspec $ describe "MyLib.add" $ do
  it "두 숫자를 더한다" $
    add 1 2 `shouldBe` 3

  it "두 번째 숫자로 제로를 더하면 첫 번째 숫자를 반환한다" $
    add 5 0 `shouldBe` 5

그런 다음, 빌드 도구를 사용하여 테스트를 실행하면 다음과 같은 출력이 나타날 수 있습니다:

MyLib.add
  - 두 숫자를 더한다
  - 두 번째 숫자로 제로를 더하면 첫 번째 숫자를 반환한다

0.0001초에 완료
2개의 예제, 0개의 실패

QuickCheck 사용하기

QuickCheck을 사용하면 함수가 충족해야 하는 속성을 표현합니다. 프로젝트 설정에 QuickCheck을 추가한 후, 이를 임포트합니다:

-- 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_addCommutative

이 테스트를 실행하면 지정된 속성을 확인하기 위해 입력을 자동으로 생성합니다:

+++ OK, 100회 테스트를 통과함.
+++ OK, 100회 테스트를 통과함.

Hspec과 QuickCheck 예제 모두에서 테스트 스위트는 코드의 정확성을 자동으로 검증할 수 있는 실행 가능한 문서로 기능합니다.