使用Hspec运行HUnit测试



我想在规范中运行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搞砸了,但都无济于事。

用这样的函数为所有测试附加标签怎么样

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]
        ...

相关内容

  • 没有找到相关文章

最新更新