是否可以跳过HSpec测试套件中的测试?

时间:2016-12-06 21:51:33

标签: haskell hspec

在大多数编程语言中,在某些情况下很容易跳过测试。在haskell HSpec测试套件中有没有正确的方法呢?

2 个答案:

答案 0 :(得分:3)

“将其更改为 xit 会将相应的规范项标记为待定。”

来源: http://hackage.haskell.org/package/hspec-2.7.8/docs/Test-Hspec.html

答案 1 :(得分:2)

如果我理解正确, HSpec Core 对于这种情况没有特殊的解决方案。但是你可以跳过没有冗长的测试。例如:

main = hspec $ do
    ...
    when isDatabaseServerRunning $ do
        describe "database" $ do
            it "test some one" $ do
                ...

另一种解决方案可能是使用类似mapSpecItem_的函数将测试结果更改为Pending,并显示有关跳过原因的消息。例如:

skip :: String -> Bool -> SpecWith a -> SpecWith a
skip   _ False = id
skip why True  = mapSpecItem_ updateItem
  where
    updateItem x = x{itemExample = \_ _ _ -> return . Pending . Just $ why}