2012-01-23 35 views
9

Tôi đang cố gắng hiểu cách tích hợp một số kiểm tra nhanh với cabal. gist cho thấy hàm quickCheck trả về trạng thái khác 0, nhưng tôi không nhận được hành vi đó, vì vậy sử dụng kiểu kiểm tra exitcode-stdio-1.0 của cabal dường như không hoạt động cho tôi trừ khi tôi muốn gọi error.Trạng thái thoát QuickCheck về lỗi và tích hợp cabal

cabal user guide cũng đề cập đến bộ thử nghiệm detailed-1.0, nhưng AFAICT này chưa tồn tại. Đó vẫn là trường hợp?

Có vẻ như từ các câu trả lời như this one mà nhiều người đang sử dụng test-framework package. Đó là quá mức cần thiết đối với tôi, nhưng đó là những gì tôi nên sử dụng?

Tôi không hài lòng với tình huống này.

Các phiên bản của những điều tôi đang sử dụng:

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

Trả lời

13

Nhìn vào quickCheck's implementation, nó thực sự không bao giờ thoát khỏi chương trình. Tuy nhiên, bạn có thể dễ dàng thực hiện hành vi này bằng 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 

sự hiểu biết của tôi là detailed-1.0 không được xem là đã sẵn sàng để sử dụng chung nêu ra, và rằng exitcode-stdio-1.0 vẫn là giải pháp kiểm tra đề nghị cho bây giờ.

+4

Tôi biết đó là 3 năm nhưng tôi đã dành quá nhiều thời gian để tìm ra rằng bạn cũng cần 'nhập Test.QuickCheck.Test' cho' isSuccess' thành "nằm trong phạm vi". Trong trường hợp bất cứ ai cũng có vấn đề đó. Trên một lưu ý phụ, có cách nào để làm cho nó đẹp hơn? (ví dụ: không phải làm cả hai 'kiểm tra nhập khẩu.QuickCheck' mà còn' Test.QuickCheck.Test'?) – conrad

6

Tôi đã sử dụng khung kiểm tra trong phiên bản mới nhất của gói Decimal của tôi. Nó không quá mức; nó đã làm những gì đã được mong muốn. Hãy xem complete source code nếu bạn muốn có ví dụ về cách sử dụng nó.

+0

Cảm ơn ví dụ, tôi nghĩ rằng tôi sẽ đi tuyến đường đó – jberryman

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