2011-11-14 31 views
25

Được rồi, như tôi đã học qua số previous question của mình, sách RWH đã lỗi thời cho QuickCheck. Và mặc dù tất cả các bài viết tôi đã đọc cho tôi biết cách sử dụng QuickCheck cực kỳ đơn giản, tôi không thể tìm thấy bất kỳ nơi nào cho tôi biết cách thay đổi số lượng kiểm tra để chạy cho một thuộc tính.Cách lấy Haskell QuickCheck 2.4 để tăng # bài kiểm tra?

RWH nói:

handyCheck limit = check defaultConfig { 
        configMaxTest = limit 
        , configEvery = \_ _ -> "" 
        } 

Làm thế nào để làm điều này với QuickCheck 2.4? Quan trọng hơn, làm thế nào tôi có thể tự tìm ra được? Xin vui lòng không cho tôi biết rằng tôi nên đã có thể tìm ra nó từ các tài liệu API.

+8

RWH ra tại một thời điểm hoàn hảo sai. Ví dụ: QC đã thay đổi, ngoại lệ thay đổi, điều tra viên trở nên phổ biến, v.v. –

Trả lời

46

Bạn đang tìm kiếm:

quickCheckWith stdArgs { maxSuccess = 5000 } someProp 

Làm thế nào tôi phát hiện ra

  1. tôi đến API documentation.
  2. Điều thứ hai tôi thấy, sau quickCheck là loại Args với trường maxSuccess.
  3. Tôi không muốn viết tất cả các trường, vì vậy tôi đã tìm giá trị loại Args - tìm kiếm stdArgs. (Sử dụng chức năng tìm kiếm trình duyệt của bạn - ctrl-f thường). OTOH, tôi có thể đã sử dụng hoogle.
  4. Tôi cần sử dụng loại Args ở đâu đó để tôi tiếp tục tìm kiếm. Dòng tiếp theo là quickCheckWith - bingo! Mặt khác, tôi có thể đã sử dụng hoogle.

Làm thế nào khác bạn có thể Tìm hiểu

Như tôi đã nói ở trên, bạn có thể đã sử dụng hoogle để tìm thấy rất nhiều các chức năng, giả sử bạn nhận ra loại Args là cốt lõi của những gì bạn cần (từ haddocks).

Nếu không, bạn có thể bị giảm xem xét những gì các gói khác thực hiện, có nghĩa là bạn cần phải biết những gói khác đáng xem. Thư mục examples trong QuickCheck có vẻ hiển nhiên, nhưng không phải tất cả các gói đều có các ví dụ như vậy. Sử dụng reverse dependencies bạn thường có thể tìm thấy gói để xem, nhưng đối với nhiều gói QC không có phụ thuộc rõ ràng.

+6

Xin chào Thomas. Tôi có thể đánh giá cao rằng bạn có thể tìm hiểu qua API. Nhưng tôi chưa bắt đầu vào gói này, và tôi không thể làm cho đầu hoặc đuôi của hầu hết nó. Bị mất trên tùy ý. Way mất trên CoArbitrary. Gen? Không có ý tưởng đó là một trong hai. Tài liệu nói "máy phát ngẫu nhiên". Tôi hi vọng bạn hiểu những gì tôi nói. Nhưng cảm ơn vì đã cung cấp câu trả lời nhanh. – Ana

+4

@Ana Có thể hiểu được rằng bạn bị mất tùy ý, Cố ý và không có điều gì. Bí quyết là, đừng quá sợ hãi bởi những thứ như vậy. Hầu hết các API có một phần dễ dàng giúp bạn bắt đầu, vì vậy hãy cố gắng bỏ qua những thứ phức tạp và tìm phần dễ dàng trước tiên. Trong trường hợp này, bạn muốn _check_ mã của bạn, vì vậy hãy tìm kiếm các hàm có chứa 'check' trong tên của chúng (trường hợp không nhạy cảm vì camelCase), và xem những gì có vẻ hữu ích. –

2

Đối với những người muốn chạy tất cả các xét nghiệm cùng một lúc và cung cấp cấu hình của họ:

return [] 
main = $forAllProperties (quickCheckWithResult stdArgs { maxSuccess = 500 }) 
+0

cảm ơn bạn vì câu trả lời này - kiểm tra nhanh là phức tạp hoặc thiếu tài liệu. tôi đã làm tất cả những phát hiện mô tả ở trên và đã làm stdArgs {maxSize = 500} đã làm giảm số lượng mẫu; tôi đã làm sai tài liệu. – user855443

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