การทดสอบหน่วยการครอบคลุมโค้ดและการวัดประสิทธิภาพส่วนใหญ่เกี่ยวกับการเลือกเครื่องมือที่เหมาะสม
- กรอบการทดสอบเป็นร้านค้าแบบครบวงจรเพื่อเรียกใช้กรณีทดสอบHUnitและคุณสมบัติQuickCheckทั้งหมดของคุณทั้งหมดจากสายรัดเดียว
- ความครอบคลุมของรหัสถูกสร้างขึ้นใน GHC ในรูปแบบของเครื่องมือHPC
- เกณฑ์ให้เครื่องจักรเปรียบเทียบที่ยอดเยี่ยม
ฉันจะใช้เป็นตัวอย่างการใช้งานแพ็คเกจที่ฉันเพิ่งเริ่มเปิดใช้งานด้วยการทดสอบหน่วยการครอบคลุมโค้ดและการวัดประสิทธิภาพ:
http://github.com/ekmett/speculation
คุณสามารถรวมการทดสอบและการวัดประสิทธิภาพลงในไฟล์ cabal ของคุณได้โดยตรงโดยการเพิ่มส่วนสำหรับพวกเขาและปิดบังไว้ด้านหลังแฟล็กเพื่อไม่ให้สร้างขึ้นเพื่อให้ผู้ใช้ทุกคนในไลบรารีของคุณต้องเข้าถึงได้ (และต้องการใช้ด้วยตนเอง ) เวอร์ชันที่แน่นอนของเครื่องมือทดสอบที่คุณเลือก
http://github.com/ekmett/speculation/blob/master/speculation.cabal
จากนั้นคุณสามารถบอก cabal เกี่ยวกับวิธีเรียกใช้ชุดทดสอบของคุณ เนื่องจากยังไม่มีการทดสอบ cabal เราจึงมีนักเรียนคนหนึ่งกำลังทำการทดสอบนี้สำหรับซัมเมอร์ปีนี้! - กลไกที่ดีที่สุดที่เรามีคือนี่คือวิธีการใช้กลไกขอเกี่ยวกับผู้ใช้ของ cabal ซึ่งหมายถึงการเปลี่ยนไปใช้งานสร้างแบบ 'กำหนดเอง' ด้วย cabal และตั้งค่า testHook ตัวอย่างของ testHook ที่รันโปรแกรมทดสอบที่เขียนด้วย test-framework จากนั้นใช้ hpc กับโปรไฟล์สามารถพบได้ที่นี่:
http://github.com/ekmett/speculation/blob/master/Setup.lhs
จากนั้นคุณสามารถใช้ test-framework เพื่อรวมการทดสอบ QuickCheck และ HUnit ไว้ในโปรแกรมเดียว:
http://github.com/ekmett/speculation/blob/master/Test.hs
ไฟล์ cabal มีความระมัดระวังในการเปิด -fhpc เพื่อเปิดใช้งานการทดสอบความครอบคลุมของโค้ดจากนั้น testHook ใน Setup.lhs จะรัน hpc ด้วยตนเองและเขียนผลลัพธ์ลงใน dist dir ของคุณ
สำหรับการเปรียบเทียบเรื่องราวเป็นแบบแมนนวลขึ้นเล็กน้อยไม่มีตัวเลือก 'การเปรียบเทียบมาตรฐาน' คุณสามารถเชื่อมโยงเกณฑ์มาตรฐานของคุณเข้ากับตะขอทดสอบของคุณได้ แต่ฉันต้องการเรียกใช้ด้วยมือเนื่องจากเกณฑ์มีตัวเลือกการรายงานแบบกราฟิกมากมาย คุณสามารถเพิ่มเกณฑ์มาตรฐานของคุณไปยังไฟล์ cabal ดังที่แสดงไว้ด้านบนให้แฟล็กการคอมไพล์แยกต่างหากซ่อนไว้หลังแฟล็ก cabal จากนั้นใช้เกณฑ์เพื่อทำการยกของหนักทั้งหมด:
http://github.com/ekmett/speculation/blob/master/Benchmark.hs
จากนั้นคุณสามารถเรียกใช้การวัดประสิทธิภาพของคุณจากบรรทัดคำสั่งและรับหน้าต่าง KDE แบบป๊อปอัปพร้อมผลลัพธ์การเปรียบเทียบ ฯลฯ
เนื่องจากในทางปฏิบัติคุณอาศัยอยู่ใน Cabal ในขณะที่พัฒนาโค้ด Haskell จึงเป็นเรื่องที่สมเหตุสมผลที่จะรวม toolchain ของคุณเข้ากับมัน
แก้ไข : ขณะนี้มีการรองรับการทดสอบ Cabal แล้ว ดูhttp://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/developing-packages.html#test-suites
cabal bench
ตอนนี้ก็มีอยู่เช่นกัน