我一直在努力使自己的自动测试功能与HUnit一起工作,一直在与Cabal抗争。我已阅读文档here和here,并且我已将测试套件部分设置为像显示的那样,但是每当我尝试使用cabal build
构建套件时,Cabal说支持的唯一测试套件类型是exitcode-stdio-1.0
。是什么赋予了?如何使用HUnit和Cabal进行自动测试?
回答
背景
所以这里的交易,在阴谋的网站上的文档“今后的文件,”那是,不是所有的这些功能都实现,并且尚未公布。 Cabal-install 0.14.0自带detailed-0.9
接口,该接口是文档(detailed-1.0
)中指定的版本之后的版本,但我还没有遇到任何与此相关的问题。如果您有cabal-install 0.10.2附带的Haskell Platform版本2011.4,您将无法使用detailed-0.9
接口。您需要升级到cabal-install 0.14.0附带的Haskell Platform 2012.2。你也可以单独升级cabal-install,这是我做的,因为在Fedora 17上,Haskell Platform仅在2011.4上。
安装
在文档here,你会看到如何使用detailed-0.9
接口与快速检查的例子。它提到了一些与HUnit,QuickCheck1和QuickCheck2有接口的软件包,但只有QuickCheck2的软件包可用于hackage。如果您需要其他框架的软件包,则需要使用darcs(VCS)从this位置下载它们。您要为HUnit界面运行的命令是:darcs get http://community.haskell.org/~ttuegel/cabal-test-hunit/
。您可能需要调整.cabal文件才能生成它,特别是它依赖于和cabal 1.10
。我将其更改为我的版本(ghc 4.*
和cabal 1.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)]
就是这样!您应该能够运行cabal configure --enable-tests && cabal build && cabal test
并查看您的单元测试通过(或失败)。
编辑
编辑以澄清,detailed-0.9
接口被包括在小集团安装0.14.0,不detailed-1.0
。
虽然Dwilson的回答很好,但是detailed
目前得不到很好的支持。您可以使用exitcode-stdio-1.0
和Test.Framework
整合HUnit
与cabal
。
它会输出所有成功和失败的测试stdout
以及失败建设,如果测试失败。请参阅我的gist。
- 1. 使用文件相关测试进行HUnit测试
- 2. 用Cabal使用quickCheck测试?
- 3. 使用JUnit进行自动化测试
- 4. 集成HUnit与Cabal的问题
- 5. 如何使用Selenium自动化我的网页进行测试
- 6. 如何使用虚拟机进行自动化测试?
- 7. 如何使用Selenium对Silverlight进行自动测试?
- 8. 使用Selenium和Cucumber进行Web服务测试自动化
- 9. Rails使用ubuntu和远程咆哮进行自动测试
- 10. 在Java中更改测试用例进行自动化测试
- 11. 如何为iOS应用程序进行自动测试?
- 12. 如何模拟Windows域用户进行自动化Web测试?
- 13. 使用@SpringApplicationConfiguration进行JUnit测试自动启动作业
- 14. 如何从python启动测试pubsub仿真器进行自动测试
- 15. 使用VMware自动执行CentOS安装以进行测试
- 16. 如何使用NSUserDefaults进行测试?
- 17. 使用DatabaseCleaner和事务进行快速测试。如何调试?
- 18. 如何使用动态创建的控件进行自动化测试?
- 19. 如何使用Metal和Swift使用CAMetalLayer进行深度测试?
- 20. 使用jasmine-node测试流星应用并进行自动测试
- 21. 使用播放列表进行自动化测试的订购测试用例
- 22. 使用Selenium IDE进行自动Web应用程序测试
- 23. setUp和tearDown如何使用Jmeter和Junit进行负载测试?
- 24. 如何使用命令行运行xcode UI自动化测试
- 25. 如何使用VS 2010进行自动化Web应用程序测试
- 26. 使用TensorFlow进行验证和测试
- 27. 使用Mockito和PowerMockito进行DAO测试
- 28. 使用HttpHandlers进行WCAT和TinyGet测试
- 29. 使用GWT和GAE进行JUnit测试
- 30. 使用Vows和Tobi进行Webapp测试
该解决方案不适用于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 2012-09-01 19:31:07
@nponeccop对不起,我的解决方案有误导性。我编辑它更清楚。清楚的是,“详细-1.0”界面还没有出来,所以你必须使用“详细-0.9”界面。到目前为止,我还没有遇到任何应该在1.0界面而不是0.9界面,但是YMMV。 – Dwilson 2012-09-03 17:15:37
对于通过Google搜索到达这里的任何人:请注意,更简单的解决方案是使用测试类型'exitcode-stdio-1.0'而不是'detailed'。下面是一个结合'exitcode-stdio-1.0'和'HUnit'的工作示例:https://gist.github.com/23Skidoo/8019225 – 2013-12-18 09:32:43