【发布时间】:2013-08-18 10:30:23
【问题描述】:
我是一名具有多种语言背景的程序员,但最近专注于 Ruby/Rails,并且有兴趣学习一些 Haskell。我也曾在 Closure 中玩过一些游戏(不过是非常基本的东西)。
我目前开发新 Ruby 应用程序的首选方法是从使用 Gherkin/Cucumber 之类的业务价值语言的高级测试开始,然后使用 RSpec 或 Minitest 之类的工具开发较小规模的组件。 (目前)开发新的 Haskell 应用程序最常见的类似工具集和策略是什么?
响应者:请耐心等待我的投票和回答接受。为了进行任何评估,我实际上必须在 Haskell 中做一些工作。谢谢。
【问题讨论】:
-
我认为一般而言,您在 Haskell 中发现的 TDD 方法比 Ruby 少,特别是编译器删除了很多需要在 Ruby 中进行单元测试的内容。我发现this answer 在查看 Haskell 的测试框架时很有用,“Real World Haskell”有第 12 章关于测试和 QA,推荐使用 QuickCheck 和 HPC。
-
@kieran 感谢您的链接。如果该语言删除了很多测试要求,那就太好了,但我认为这只是意味着需要更少的单元测试,而不是 TDD 失去了它的价值。另外,AAT 呢? HSpec 提到了“验收测试驱动计划”,但我没有看到任何类似 Cucumber 或 Fitness 的内容。我在 Github 上看到了一个 cucumber-haskell 项目,但它看起来像是一项正在进行的早期工作。
-
是的,我肯定没有看到过类似 Haskell 的 fitmente 的东西,这就是为什么我只是评论而不是回答的原因。我喜欢 TDD w/fitnesse 用于我在 .NET 中的工作,但我在 Haskell 周围进行黑客攻击的经验远不是一个面向测试的系统,而是更喜欢将小型、类型/数据驱动的正确函数组合成更大的系统,其中纯度等. 保证文章的正确性。认为值得一提的可能是不同的方法,但无论哪种方式,我都很感兴趣地看着这个问题
-
Haskell 的低级 TDD 的一个问题是,要编写有意义的测试,您需要知道所测试的类型。对于 Haskell 中通用功能的基本单元(特别是如果您正在设计让类型来表达尽可能多的代码属性),找出类型通常是最难的部分!找到正确的类型后,代码几乎会自行编写,这是一种常见的体验。如果是这种情况,那么组件开发的很大一部分(了解类型)是编写测试的先决条件。
标签: unit-testing haskell bdd acceptance-testing