Test.HUnit
提供了一个红色大按钮来运行测试:
runTestTT :: Test -> IO Counts
由于需要构建大型测试套件,Test
不是单个测试,而是实际上是一棵带标签的玫瑰树,叶子中带有 Assertion
:
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 和其他测试进行抽象的库和程序,并拥有自己的测试名称分组和管理基础设施,例如test-framework 。它为您提供了一个接受命令行参数的 main
函数,其中包括允许您指定要运行的测试或测试组(通过名称匹配)的函数。
关于unit-testing - 在 HUnit 中选择性运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12301506/