2012-11-23 30 views
10

Mô-đun Batch của QuickCheck đã bị xóa với version 2 (1.2.0.1 still has it). Bởi vì điều này, tôi luôn luôn cảm thấy như mapM_ -ing nhiều bài kiểm tra với nhau là loại hacky. Tôi có thấy tính năng kế thừa trong QuickCheck 2 không? Có một cách hợp lý để nhóm các bài kiểm tra độc lập lại với nhau không?QuickCheck 2 xử lý theo lô

+3

Nhìn vào ['khung kiểm tra'] (http://hackage.haskell.org/package/test-framework) và [' test-framework-quickcheck2'] (http: // hackage .haskell.org/package/test-framework-quickcheck2). – dflemstr

Trả lời

9

Có tùy chọn 'đi lớn hoặc về nhà' để nhóm lại tất cả các thử nghiệm trong mô-đun hiện tại qua Test.QuickCheck.All. Nó đòi hỏi Template Haskell và tất cả các thuộc tính phải bắt đầu bằng prop_. Ví dụ:

{-# LANGUAGE TemplateHaskell #-} 

import Test.QuickCheck.All 

prop_one, prop_two :: a -> Bool 
prop_one = const True 
prop_two = const True 

runTests :: IO Bool 
runTests = $quickCheckAll 

main :: IO() 
main = runTests >>= \passed -> if passed then putStrLn "All tests passed." 
             else putStrLn "Some tests failed." 
+1

Hai lưu ý quan trọng: Thứ nhất, các thuộc tính từ các mô-đun đã nhập dường như không được bao gồm. Thứ hai, (và có vẻ rất lạ), trong GHC 7.8 bạn cần chèn 'return []' trước dòng 'runTests = $ quickCheckAll'. Xem [trang haddock mô-đun] (http://hackage.haskell.org/package/QuickCheck-2.7.6/docs/Test-QuickCheck-All.html) để biết thêm thông tin. – MasterMastic

+0

Nếu bạn đang thử nghiệm thông qua một bộ thử cabal, 'main' này có lẽ sẽ phù hợp với bạn tốt hơn:' main = runTests >> = \ passed -> nếu được thông qua sau đó exitSuccess else exitFailure'. Và bạn cũng sẽ cần 'import System.Exit (exitSuccess, exitFailure)'. – MasterMastic

Các vấn đề liên quan