是否可以跳过 HSpec 测试套件中的测试?
Is it possible to skip tests in HSpec test suite?
在大多数编程语言中,在某些情况下很容易跳过测试。在 haskell 基于 HSpec 的测试套件中是否有正确的方法来做到这一点?
如果我没理解错,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}
“将其更改为 xit 会将相应的规范项目标记为待定。”
来源:
http://hackage.haskell.org/package/hspec-2.7.8/docs/Test-Hspec.html
在大多数编程语言中,在某些情况下很容易跳过测试。在 haskell 基于 HSpec 的测试套件中是否有正确的方法来做到这一点?
如果我没理解错,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}
“将其更改为 xit 会将相应的规范项目标记为待定。”
来源: http://hackage.haskell.org/package/hspec-2.7.8/docs/Test-Hspec.html