2012-04-26 3 views
8

이 quickCheck의 팬이기 때문에 모든 quickChecks, 나는 내 프로그램을 통해자동으로

prop_something_something = ... 

을 많이 가지고 수집합니다. 편의를 위해

, 쉽게 그들 모두를 실행하는, 내가

runchecks = do 
    quickCheck prop_something_something 
    quickCheck prop_something_different 

를 정의하지만, runchecks를 생성하는 좋은 방법은 무엇입니까?

TL : DR : 파일에서 모든 quickChecks를 쉽게 실행하고 싶습니다. 나는 runnable 테스트에 test_ 또는 비슷한 것을 접두사로 붙이는 방법 중 하나라고 생각하지만, 너무 익숙하지 않을 수 있습니다.

답변

7

test-framework-th 패키지로이 작업을 수행 할 수 있습니다. 그냥 수행

import Test.Framework.TH 
import Test.Framework.Providers.QuickCheck2 
runchecks = $(defaultMainGenerator) 

이이 테스트를 실행의 test-framework 방법을 사용합니다, 당신은 단순히 자주 좋은 일이다, 다른 후 하나를 테스트를 실행하여 얻을 것보다 약간 더 많은 정보를 얻을 수 있습니다 즉, .

이 기능을 사용하려면 분명히 TemplateHaskell이 필요합니다. Cabal 파일에 Default-extensions: TemplateHaskell을 추가하거나 {-# LANGUAGE TemplateHaskell #-}을 파일 맨 위에 추가하십시오.

+0

그냥 추가하여이 오류가 발생합니다. http://hpaste.org/67672 - 다른 변경을해야합니까? 원한다면 더 많은 코드를 붙여 넣을 것입니다. –

+0

분명히 'QuickCheck2' 공급자 모듈도 포함시켜야합니다. 자세한 내용은 내 업데이트 된 답변을 참조하십시오. – dflemstr

+0

예, 가져 오기 추가 Test.Framework.Providers.QuickCheck2가 작동했습니다. 감사. :) –

8

추가 기능 :이 기능은 QuickCheck 2에서도 기본적으로 제공되며 quickCheckAll 기능을 참조하십시오. 가져 오기에는 Test.QuickCheck.AllTemplateHaskell이 필요합니다. quickCheckAll은 모듈 이름이 prop_으로 시작하는 모든 함수를 테스트합니다.