Tôi gặp một số lượng đáng ngạc nhiên khó khăn trong việc kiểm tra đơn vị để chạy theo cabal. Tôi đã sao chép mã kiểm tra đúng nguyên văn từ the cabal documentation, với ngoại lệ của việc thay đổi tên mô-đunLàm thế nào để sử dụng chi tiết-0.9 trong thử nghiệm cabal
{-# LANGUAGE FlexibleInstances #-}
module Test.Integral (tests) where
import Distribution.TestSuite
instance TestOptions (String, Bool) where
name = fst
options = const []
defaultOptions _ = return (Options [])
check _ _ = []
instance PureTestable (String, Bool) where
run (name, result) _ | result == True = Pass
| result == False = Fail (name ++ " failed!")
test :: (String, Bool) -> Test
test = pure
-- In actual usage, the instances 'TestOptions (String, Bool)' and
-- 'PureTestable (String, Bool)', as well as the function 'test', would be
-- provided by the test framework.
tests :: [Test]
tests =
[ test ("bar-1", True)
, test ("bar-2", False)
]
Tuy nhiên, khi tôi cố gắng xây dựng các bài kiểm tra, tôi nhận được thông báo sau:
Test/Integral.hs:6:10:
Not in scope: type constructor or class `TestOptions'
Test/Integral.hs:12:10:
Not in scope: type constructor or class `PureTestable'
tôi đã thử nhập chúng trực tiếp từ Distribution.TestSuite, nhưng nó nói rằng chúng không được xuất khẩu. Điều này đơn giản là tôi phải làm điều gì đó ngu ngốc, nhưng tôi không thể thấy nó là gì.
'TestOptions' et al dường như đang đề cập đến một phiên bản cũ của OLD QuickCheck. Tôi đề nghị bạn sử dụng một khung kiểm tra hiện đại (nó xuất hiện những gì bạn đang xem chỉ là một khuôn khổ để chạy bộ thử nghiệm thông qua cabal, không xây dựng bộ thực tế - tìm hiểu ngon hoặc thử nghiệm khuôn khổ). –