Unit testing 在HUnit中选择运行测试
Unit testing 在HUnit中选择运行测试,unit-testing,haskell,Unit Testing,Haskell,Test.HUnit提供了一个红色的大按钮来运行测试: runTestTT :: Test -> IO Counts 由于需要构造大型测试套件,test不是一个单独的测试,而是一个带有标签的玫瑰树,叶子中有断言: data Test = TestCase Assertion | TestList [Test] | TestLabel String Test -- Defined in `Test.HUnit.Base' 它不是抽象的,所以可以处理它。一个特别有用的处
Test.HUnit
提供了一个红色的大按钮来运行测试:
runTestTT :: Test -> IO Counts
由于需要构造大型测试套件,test
不是一个单独的测试,而是一个带有标签的玫瑰树,叶子中有断言
:
data Test
= TestCase Assertion | TestList [Test] | TestLabel String Test
-- Defined in `Test.HUnit.Base'
它不是抽象的,所以可以处理它。一个特别有用的处理是通过路径提取子树:
byPath = flip $ foldl f where
f (TestList l) = (l !!)
f (TestLabel _ t) = const t
f t = const t
因此,例如,我可以运行单个子套件runTestTT$byPath[1]测试
,或者运行由测试路径标识的特定测试runTestTT$byPath[1,7,3]测试
,而不是等待整个套件
自制工具的一个缺点是测试路径没有被保留(缩短)
Hackage上已经有这样的处理帮助工具了吗?最接近您需要的似乎是对HUnit、Quickcheck和其他测试进行抽象的库和程序,它们有自己的测试名称分组和管理基础设施,例如。它为您提供了一个
main
函数,该函数接受命令行参数,包括一个允许您指定要运行的测试或测试组的参数(通过在名称上全局搜索)