unit-testing - 在 HUnit 中选择性运行测试

标签 unit-testing haskell

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/

相关文章:

haskell - 福金加的预态性意味着什么?

Haskell 枚举比较

haskell - 为什么 Data.Text 示例对我不起作用?

python - 如何修复 python 构建错误 "ValueError: no such test method in <class ' __main__。”

c# - 当字段设置为必需时,EF inMemory 提供程序错误地接受空条目

c# - 如何测试内部类库?

image - 类似于 Haskell 的 Pygame?

unit-testing - 测试 future 和流,我如何创建一个假的上下文?

java - spring-boot-test spyBean 注释未注入(inject)依赖项

Haskell 在添加时重复使用 fromIntegral