0

仕様内で 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役に立ちませんでした。

4

1 に答える 1

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]
        ...
于 2015-11-14T13:54:18.630 に答える