首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Test.HUnit中执行Haskell‘executing (HUnit)时“未能找到模块’HUnit‘”错误

在Test.HUnit中执行Haskell‘executing (HUnit)时“未能找到模块’HUnit‘”错误
EN

Stack Overflow用户
提问于 2015-04-29 16:07:35
回答 1查看 1.9K关注 0票数 2

我有Haskell的HUnit的简单单元测试代码。我使用MacOSX10.10,并在HUnit中安装了cabal install hunit

代码语言:javascript
复制
module TestSafePrelude where

import SafePrelude( safeHead )
import Test.HUnit

testSafeHeadForEmptyList :: Test
testSafeHeadForEmptyList = 
    TestCase $ assertEqual "Should return Nothing for empty list"
                           Nothing (safeHead ([]::[Int]))

testSafeHeadForNonEmptyList :: Test
testSafeHeadForNonEmptyList =
    TestCase $ assertEqual "Should return (Just head) for non empty list" (Just 1)
               (safeHead ([1]::[Int]))

main :: IO Counts
main = runTestTT $ TestList [testSafeHeadForEmptyList, testSafeHeadForNonEmptyList]

我可以使用runhaskell TestSafePrelude.hs执行它以获得结果:

代码语言:javascript
复制
Cases: 2  Tried: 2  Errors: 0  Failures: 0
Counts {cases = 2, tried = 2, errors = 0, failures = 0}

但是,当我在代码运行程序中运行它时,我会收到找不到HUnit模块的错误消息。

CodeRunner在不同的shell环境上启动测试,这似乎就是问题所在。如果是,那么需要添加哪些环境变量?如果没有,是什么导致了这个问题?

我还发现,来自ghc-pkg list的CodeRunner不搜索包含HUnit的~/.ghc中的目录。

代码语言:javascript
复制
/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/package.conf.d:
    Cabal-1.18.1.4
    array-0.5.0.0
    ...
    xhtml-3000.2.1

这是在shell中执行时的结果:

代码语言:javascript
复制
/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/package.conf.d
   Cabal-1.18.1.4
   array-0.5.0.0
   ...
/Users/smcho/.ghc/x86_64-darwin-7.8.3/package.conf.d
   ...
   HUnit-1.2.5.2
   ...
   zlib-0.5.4.2

我在path中同时添加了~/.cabal~/.ghc,但是它不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 20:23:05

问题是$HOME设置的更改。我对$HOME使用了不同的CodeRunner,但是Haskell搜索$HOME/..cabal和$HOME/..ghc来查找已安装的包。

在我将$HOME重置为正确的位置后,一切都很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29949063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档