繁体   English   中英

在CodeRunner中执行Haskell的单元测试(HUnit)时出现“找不到模块'Test.HUnit'”错误

[英]“Could not find module ‘Test.HUnit’” Error when executing Haskell's unittest (HUnit) in CodeRunner

我有Haskell的HUnit的简单单元测试代码。 我使用Mac OS X 10.10,并通过cabal install hunit

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执行它以获取结果:

Cases: 2  Tried: 2  Errors: 0  Failures: 0
Counts {cases = 2, tried = 2, errors = 0, failures = 0}

但是,当我在Code Runner中运行它时,出现错误消息,找不到HUnit模块。

在此处输入图片说明

CodeRunner在不同的Shell环境上启动测试,这似乎是问题所在。 如果是这样,需要添加哪些环境变量? 如果没有,可能是什么原因引起的?

在此处输入图片说明

我还发现CodeRunner的ghc-pkg list未在~/.ghc中搜索包含HUnit的目录。

/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中执行时的结果:

/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

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

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

将$ HOME重置为正确的位置后,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM