Haskell中的在线测试用例

问题描述:

我正在Haskell中开发一个库,我希望以一种与Haddock兼容的方式记录文件,并在一点上传到Hackage。我已经阅读了关于使用Cabal的框架以及HUnit和Quickcheck进行的测试,但是在我读过的所有教程中似乎都会创建一个单独的目录,并将测试用例放入单独的文件中,导入原始文件。Haskell中的在线测试用例

我明白这可能是适当的有时候,但我也认为只是简短的测试,将它们放在与实现相同的文件更简单。事实上,文档与实现一致,所以为什么不测试?

可能有人点我实现这一目标的最佳方式,最好的方式是:

  1. 没有乱了鳕鱼的产生和
  2. 不臃肿库(即当它的在发布模式下构建测试将被忽略)。

我知道这是一个模糊的问题,甚至一些链接到一些教程和/或代码,这样的测试案例将不胜感激。

+5

查看Python启发的[doctest](http://hackage.haskell.org/package/doctest)库。 [这里](https://github.com/sol/doctest#readme)的文档。 [Here](https://github.com/danidiaz/process-streaming)是一个使用它的项目的例子。 – danidiaz

+0

我真的很喜欢这个想法danidiaz。谢谢。我会放弃它。 – Clinton

第二danidiazsuggestiondoctest。我已经(看到它)在lens中使用,它工作得很好IMO测试只是Haddock的评论,所以甚至没有编译,除非你正在运行doctest。

(QuickCheck)测试用例需要在运行时生成,这就是每个测试套件都有自己的可执行文件的原因。我认为你是正确的,它会帮助文档,但它是可运行代码 - 这就是为什么我们不希望它污染我们的图书馆。老实说,类型系统适合作为一个体面的内联“测试框架” - 通过建设性地证明你的代码对于类型系统是正确的,你甚至比测试用例更进一步。