[英]How to use HUnit and Cabal to do Automated Testing?
所以这是交易,cabal网站上的文档是“未来文档”,也就是说,并非所有这些功能都已实现和发布。 Cabal-install 0.14.0附带detailed-0.9
接口,这是一个落后于docs( detailed-1.0
)的版本,但我还没有遇到任何与此相关的问题。 如果你有cabal-install 0.10.2附带的Haskell平台版本2011.4,你将无法使用detailed-0.9
接口。 您需要升级到装有cabal-install 0.14.0的Haskell Platform 2012.2。 您也可以单独升级cabal-install,这就是我所做的,因为在Fedora 17上,Haskell平台仅在2011.4上。
在这里的文档中,您将看到如何使用QuickCheck的detailed-0.9
接口的示例。 它提到了一些包含HUnit,QuickCheck1和QuickCheck2接口的软件包,但只有QuickCheck2软件包可用于hackage。 如果你想为框架,其余部分的包,你将需要使用的darcs(一个VCS)从下载他们这个位置。 您要为HUnit接口运行的命令是: darcs get http://community.haskell.org/~ttuegel/cabal-test-hunit/
。 您可能必须调整.cabal文件才能使其生成,特别是它依赖于ghc 3.*
和cabal 1.10
。 我把它更改为我的版本( ghc 4.*
和cabal 1.14
)并且它构建得很好。
一旦你构建了界面,你需要在你的测试模块中做一些事情,以便Cabal可以运行它。 具体来说,您需要导入Distribution.TestSuite
和Distribution.TestSuite.HUnit
。 之后,您需要使用HUnit界面中提供的功能将HUnit Tests转换为Cabal Tests。 这是相关的代码行:
import qualified Distribution.TestSuite as Cabal
import qualified Distribution.TestSuite.HUnit as CabalHUnit
tests = map (\(x,y) -> CabalHUnit.test x y) [("Login tests", loginTests)]
而已! 您应该能够运行cabal configure --enable-tests && cabal build && cabal test
并查看您的单元测试通过(或失败)。
编辑
编辑以澄清detailed-0.9
接口包含在cabal-install 0.14.0中,而不是detailed-1.0
。
虽然Dwilson的回答是不错的, detailed
,目前没有得到很好的支持。 您可以使用HUnit
exitcode-stdio-1.0
和Test.Framework
HUnit
与cabal
Test.Framework
。
如果测试失败,它会将所有成功和失败的测试stdout
到stdout
以及构建失败。 看看我的要点 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.