我是一名具有多种语言背景的程序员,但最近专注于Ruby / Rails并且有兴趣学习一些Haskell。我已经在Closure中做了一些游戏(虽然很基本的东西)。
我目前开发新Ruby应用程序的首选方法是从使用Gherkin / Cucumber之类的业务价值语言开始高级测试,然后使用RSpec或Minitest之类的东西开发小规模组件。 (目前)开发新Haskell应用程序的最常见的类似工具集和策略是什么?
响应者:请耐心等待投票&回答我的接受。我必须在Haskell中做一些工作才能进行任何评估。感谢。
答案 0 :(得分:7)
通常,Haskell应用程序中的真实来源是类型系统。您可以使用quickcheck和hspec来确保您的代码符合您的想法,但这只是一种帮助。
答案 1 :(得分:2)
对于Haskell中基于故事的自动验收测试,您有两个主要选择:
当然,HSpec填补了基于规范的验收测试角色。
使用基于属性的测试而不是使用QuickCheck和Smallcheck等库的TDD,可以获得更好的结果。
答案 2 :(得分:1)
据我所知,Haskell没有Cucumber类似物。最接近您正在寻找的可能是HSpec,这是RSpec-ish。
以下是一个示例,verbatim from the HSpec site:
import Test.Hspec
import Test.QuickCheck
import Control.Exception (evaluate)
main :: IO ()
main = hspec $ do
describe "Prelude.head" $ do
it "returns the first element of a list" $ do
head [23 ..] `shouldBe` (23 :: Int)
it "returns the first element of an *arbitrary* list" $
property $ \x xs -> head (x:xs) == (x :: Int)
it "throws an exception if used with an empty list" $ do
evaluate (head []) `shouldThrow` anyException
哪个产生
Prelude.head
- returns the first element of a list
- returns the first element of an *arbitrary* list
- throws an exception if used with an empty list