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ô
Trả lời
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."
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
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
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