2012-01-23 3 views
9

일부 빠른 테스트를 cabal과 통합하는 방법을 이해하려고합니다. 이 gistquickCheck 함수가 실패시 0이 아닌 상태를 반환하지만 그 동작을 얻지 못한다는 것을 나타내므로 cab32의 exitcode-stdio-1.0 테스트 스위트 유형을 사용하면 내 테스트에서 error을 호출하지 않는 한 나에게 적합하지 않은 것처럼 보입니다.실패 및 캐비티 통합에 대한 빠른 종료 종료 상태

캐벌 user guide에는 detailed-1.0 테스트 스위트가 언급되어 있지만 AFAICT는 아직 존재하지 않습니다. 아직도 그렇습니까?

많은 사람들이 test-framework package을 사용하고 있다는 답변이 this one 인 것 같습니다. 그게 과도한 잔혹한 생각인데, 내가 사용해야 할게 뭐야?

나는이 상황에 만족하지 못했습니다. 내가 사용 일의

버전 :

cabal-install version 0.10.2 
using version 1.10.1.0 of the Cabal library 
QuickCheck-2.4.1.1 

답변

13

quickCheck's implementation 보면,이 프로그램을 종료하지 실제로 않았다. 그러나, 당신은 쉽게 quickCheckResult를 사용하여이 동작을 구현할 수 있습니다

import Control.Monad 
import Test.QuickCheck 
import Test.QuickCheck.Test 
import System.Exit 

main :: IO() 
main = do 
    result <- quickCheckResult prop 
    unless (isSuccess result) exitFailure 

나의 이해는 detailed-1.0 아직 일반적인 사용을위한 준비가 고려되지 않는 것입니다, 그리고 exitcode-stdio-1.0 여전히 지금의 권장 테스트 솔루션이다.

+4

나는 그것이 3 + yrs 였음을 알고 있지만, 너무 많은 시간을 들여서 isSuccess를 "가져 오기 Test.QuickCheck.Test'를"범위에 있어야 "한다는 것을 알아 내려고했습니다. 누군가가 그 문제를 가지고있는 경우에 대비해서. 사이드 노트에서 더 멋지게 만들 수있는 방법이 있습니까? (즉,'Test Test.QuickCheck'와'Test.QuickCheck.Test' 두 가지를 모두 할 필요가 없습니까?) – conrad

6

Decimal 패키지의 최신 버전에서 테스트 프레임 워크를 사용했습니다. 그것은 과도하지 않았다. 그것은 단지 원했던 것을했습니다. 사용 방법의 예를 보려면 complete source code을보십시오.

+0

예를 들어 주셔서 감사합니다. – jberryman