使用Hspec运行HUnit测试

时间:2015-11-14 09:38:36

标签: haskell hunit hspec

我想在规范中运行HUnit测试:

module SHCSpec (spec)
    where

import Test.Hspec
import Test.Hspec.Contrib.HUnit
import Test.HUnit

import SHC.Types
import SHC.Lix


spec :: Spec
spec = do
    fromHUnitTest ("SHC.Lix" ~: "toHit" ~:
        [ Irrelevant @=? toHit []
        , None       @=? toHit [False]
        , None       @=? toHit [False, False]
        , Partial    @=? toHit [False, True]
        , Partial    @=? toHit [True, False]
        , Partial    @=? toHit [False, False, True]
        , Partial    @=? toHit [False, True, False]
        , Partial    @=? toHit [True, False, False]
        , Full       @=? toHit [True]
        , Full       @=? toHit [True, True]
        ])

上面的代码有效,但它产生了这个丑陋的输出:

SHC
  SHC.Lix
    toHit
      <unlabeled>
      <unlabeled>
      <unlabeled>
      <unlabeled>
      <unlabeled>
      <unlabeled>
      <unlabeled>
      <unlabeled>
      <unlabeled>
      <unlabeled>

是否可以将标签toHit附加到每个测试用例?像这样:

SHC
  SHC.Lix
    toHit
    toHit
    toHit
    toHit
    toHit
    toHit
    toHit
    toHit
    toHit
    toHit

更好的方法是在每个toHit案例中附加一个数字。我与TestListmap TestLabel混淆无济于事。

1 个答案:

答案 0 :(得分:1)

如何使用以下函数将标签附加到所有测试中:

label ts =
  [ show i ~: t | (i,t) <- zip [(1::Int)..] ts ]

只需拨打label

,就可以在测试列表前加上前缀
spec :: Spec
spec = do
    fromHUnitTest ("SHC.Lix" ~: "toHit" ~:
        label
        [ Irrelevant @=? toHit []
        , None       @=? toHit [False]
        ...