我刚刚开始一个新的Haskell项目,并希望从一开始就建立一个良好的测试工作流程.看起来Haskell有很多优秀而独特的测试工具和许多不同的集成方法.
我调查过:
所有这些似乎都在他们的领域中运作良好,但我正在寻找一种全面的测试方法,并且想知道哪些方法对其他人有效.
Edw*_*ETT 70
正确获取单元测试,代码覆盖率和基准测试主要是选择合适的工具.
我将使用我刚刚开始启用单元测试,代码覆盖率和基准测试的软件包作为运行示例:
http://github.com/ekmett/speculation
您可以通过为它们添加部分将测试和基准直接集成到cabal文件中,并将它们隐藏在标志后面,这样它们就不会使您的库中的每个用户都必须访问(并且想要自己使用) )您选择的测试工具的确切版本.
http://github.com/ekmett/speculation/blob/master/speculation.cabal
然后,您可以告诉cabal有关如何运行测试套件的信息.由于阴谋测试尚不存在 - 我们有一名学生正在为今年夏天的代码工作!- 我们拥有的最佳机制以下是如何使用cabal的用户钩子机制.这意味着切换到使用cabal的"Custom"构建并设置testHook.运行使用test-framework编写的测试程序的testHook示例,然后将hpc应用于配置文件,可以在此处找到:
http://github.com/ekmett/speculation/blob/master/Setup.lhs
然后,您可以使用test-framework将QuickCheck和HUnit测试捆绑到一个程序中:
http://github.com/ekmett/speculation/blob/master/Test.hs
那里的cabal文件小心打开-fhpc以启用代码覆盖测试,然后Setup.lhs中的testHook手动运行hpc并将其输出写入dist目录.
对于基准测试,故事更加手动,没有'cabal benchmark'选项.您可以将基准测试连接到测试钩子,但我喜欢手动运行它们,因为Criterion有很多图形报告选项.您可以将您的基准添加到cabal文件中,如上所示,给它们单独的编译标志,将它们隐藏在cabal标志后面,然后使用Criterion完成所有繁重的工作:
http://github.com/ekmett/speculation/blob/master/Benchmark.hs
然后,您可以从命令行运行基准测试,并获得带有基准测试结果的弹出式KDE窗口等.
因为在实践中你在开发Haskell代码时仍然生活在cabal中,所以将工具链与它集成在一起是很有意义的.
编辑:现在确实存在Cabal测试支持.见http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/developing-packages.html#test-suites
ste*_*ehr 10
为了测试,我依赖于HUnit和QuickCheck属性,并使用Haskell测试框架自动收集所有单元测试和所有QuickCheck属性.
免责声明:我是Haskell测试框架的主要开发人员.
| 归档时间: |
|
| 查看次数: |
11070 次 |
| 最近记录: |