Việc kiểm tra đơn vị, phạm vi mã và điểm chuẩn phù hợp chủ yếu là chọn đúng công cụ.
- test-framework cung cấp một điểm duy nhất để chạy tất cả các trường hợp thử nghiệm HUnit và thuộc tính QuickCheck của bạn tất cả từ một bộ khai thác.
- Phạm vi của mã được tích hợp vào GHC dưới dạng công cụ HPC .
- Criterion cung cấp một số máy đo điểm chuẩn khá tuyệt vời
Tôi sẽ sử dụng như một ví dụ đang chạy, một gói mà tôi vừa mới bắt đầu kích hoạt với thử nghiệm đơn vị, phạm vi mã và điểm chuẩn:
http://github.com/ekmett/speculation
Bạn có thể tích hợp các bài kiểm tra và điểm chuẩn trực tiếp vào tệp cabal của mình bằng cách thêm các phần cho chúng và che chúng đằng sau các cờ để chúng không xuất hiện để mọi người dùng trong thư viện của bạn phải có quyền truy cập (và muốn sử dụng cho chính họ ) phiên bản chính xác của các công cụ kiểm tra bạn đã chọn.
http://github.com/ekmett/speculation/blob/master/speculation.cabal
Sau đó, bạn có thể nói với cabal về cách chạy bộ thử nghiệm của mình. Vì bài kiểm tra cabal chưa tồn tại - chúng tôi có một sinh viên đang làm bài kiểm tra đó cho mùa hè năm nay về mã! - cơ chế tốt nhất mà chúng tôi có Đây là cách sử dụng cơ chế móc người dùng của cabal. Điều này có nghĩa là chuyển sang bản dựng 'Custom' với cabal và thiết lập testHook. Bạn có thể tìm thấy ví dụ về testHook chạy chương trình thử nghiệm được viết bằng test-framework, sau đó áp dụng hpc vào cấu hình của nó:
http://github.com/ekmett/speculation/blob/master/Setup.lhs
Và sau đó, bạn có thể sử dụng khung thử nghiệm để gói các thử nghiệm QuickCheck và HUnit vào một chương trình:
http://github.com/ekmett/speculation/blob/master/Test.hs
Tệp cabal ở đó hãy cẩn thận bật -fhpc để kích hoạt kiểm tra độ phủ mã, và sau đó testHook trong Setup.lhs chạy hpc theo cách thủ công và ghi đầu ra của nó vào dir dist của bạn.
Đối với điểm chuẩn, câu chuyện là thủ công hơn một chút, không có tùy chọn 'điểm chuẩn cabal'. Bạn có thể chuyển các điểm chuẩn vào móc thử nghiệm của mình, nhưng tôi thích chạy chúng bằng tay, vì Criterion có rất nhiều tùy chọn báo cáo đồ họa. Bạn có thể thêm điểm chuẩn của mình vào tệp cabal như được hiển thị ở trên, cung cấp cho chúng các cờ biên dịch riêng biệt, ẩn chúng sau một cờ cabal và sau đó sử dụng Criterion để thực hiện tất cả các công việc nặng nhọc:
http://github.com/ekmett/speculation/blob/master/Benchmark.hs
Sau đó, bạn có thể chạy điểm chuẩn của mình từ dòng lệnh và nhận cửa sổ KDE bật lên với kết quả điểm chuẩn, v.v.
Vì trong thực tế, bạn vẫn đang sống ở cabal trong khi phát triển mã Haskell, nên việc tích hợp chuỗi công cụ của bạn với nó là rất hợp lý.
Chỉnh sửa : Hỗ trợ thử nghiệm Cabal hiện đã tồn tại. Xem http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/developing-packages.html#test-suites
cabal bench
bây giờ cũng tồn tại.