2

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] tests或由测试路径标识的特定测试runTestTT $ byPath [1,7,3] tests,而不是等待整个套件。

国产工具的一个缺点是没有保留(缩短)测试路径。

Hackage 上是否已经有这样的处理辅助工具?

4

1 回答 1

2

最接近您需求的似乎是对 HUnit、Quickcheck 和其他测试进行抽象的库和程序,并拥有自己的测试名称分组和管理基础设施,例如test-framework。它为您提供了一个main接受命令行参数的函数,包括一个允许您指定要运行的测试或测试组的函数(通过名称的通配符)。

于 2012-09-06T14:47:22.657 回答