Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何使用HUnit和Cabal进行自动化测试?_Unit Testing_Haskell_Cabal_Hunit - Fatal编程技术网

Unit testing 如何使用HUnit和Cabal进行自动化测试?

Unit testing 如何使用HUnit和Cabal进行自动化测试?,unit-testing,haskell,cabal,hunit,Unit Testing,Haskell,Cabal,Hunit,我已经和阴谋集团斗争了一天的大部分时间,试图让它的自动测试功能与HUnit一起工作。我已经阅读了文档,并且我已经按照它显示的那样设置了我的测试套件部分,但是每当我尝试使用cabalbuildcabal构建包时,cabal说唯一支持的测试套件类型是exitcode-stdio-1.0。提供了什么?背景 所以这里的交易,在阴谋集团网站上的文档是“未来的文档”,也就是说,并不是所有的功能都实现和发布了。Cabal install 0.14.0附带了detailed-0.9界面,这是文档中指定的版本(d

我已经和阴谋集团斗争了一天的大部分时间,试图让它的自动测试功能与HUnit一起工作。我已经阅读了文档,并且我已经按照它显示的那样设置了我的测试套件部分,但是每当我尝试使用
cabalbuild
cabal构建包时,cabal说唯一支持的测试套件类型是
exitcode-stdio-1.0
。提供了什么?

背景 所以这里的交易,在阴谋集团网站上的文档是“未来的文档”,也就是说,并不是所有的功能都实现和发布了。Cabal install 0.14.0附带了
detailed-0.9
界面,这是文档中指定的版本(
detailed-1.0
),但我还没有遇到任何与此相关的问题。如果您的Haskell平台版本2011.4随cabal安装0.10.2提供,您将无法使用
detailed-0.9
界面。您需要升级到Haskell Platform 2012.2,该平台随cabal install 0.14.0一起提供。您也可以单独升级cabal安装,这是我所做的,因为在Fedora 17上Haskell平台仅在2011.4版

装置 在文档中,您将看到一个如何使用QuickCheck的
detailed-0.9
接口的示例。它提到了一些具有HUnit、QuickCheck1和QuickCheck2接口的包,但hackage上只有QuickCheck2的包可用。如果您想要其余框架的软件包,您需要使用DARC(VCS)从本地下载它们。要为HUnit接口运行的命令如下:
darcs gethttp://community.haskell.org/~ttuegel/cabal test hunit/
。您可能需要调整.cabal文件才能进行构建,特别是它依赖于
ghc 3.*
cabal 1.10
。我把它改成了我的版本(
ghc4.*
cabal1.14
),它构建得很好

测试 一旦你建立了接口,你需要在你的测试模块中做一些事情,以便阴谋集团可以运行它。具体来说,您需要同时导入
Distribution.TestSuite
Distribution.TestSuite.HUnit
。之后,您需要使用HUnit接口中提供的函数将HUnit测试转换为Cabal测试。以下是相关的代码行:

import qualified Distribution.TestSuite as Cabal
import qualified Distribution.TestSuite.HUnit as CabalHUnit

tests = map (\(x,y) -> CabalHUnit.test x y) [("Login tests", loginTests)]
就这样!您应该能够运行
cabalconfigure--enablets&&cabalbuild&&cabaltest
并查看单元测试通过(或失败)

编辑

编辑以澄清
detailed-0.9
接口包含在cabal install 0.14.0中,而不是
detailed-1.0

尽管Dwilson的答案很好,但
detailed
目前没有得到很好的支持。您可以使用
exitcode-stdio-1.0
Test.Framework
HUnit
cabal
集成


它将所有成功和失败的测试输出到标准输出,如果测试失败,则输出失败生成。请参阅我的。

此解决方案不适用于HP 2012.2
cabal--version
分别显示
0.14.0
1.14.0
,但是
cabal configure--enable tests
仍然显示“测试类型为:exitcode-stdio-1.0,detailed-0.9”。所以官方的
1.14.0
仍然没有
detailed-1.0
@nponeccop,很抱歉我的解决方案有误导性。我把它编辑得更清楚了。需要说明的是,“detailed-1.0”界面还没有发布,因此您必须使用“detailed-0.9”界面。到目前为止,我还没有遇到任何应该出现在1.0界面而不是0.9界面中的东西,但是YMMV。对于通过谷歌搜索来到这里的任何人:请注意,一个更简单的解决方案是使用测试类型
exitcode-stdio-1.0
,而不是
detailed
。下面是一个结合了
exitcode-stdio-1.0
HUnit
的工作示例: