我在导入模块进行测试时遇到了一些问题。我想在Load
中导入TestLoad
以进行测试。我已经尝试将源目录添加到hs-source-dirs
以及将nsga
包和模块Load
添加到测试包的cabal文件中的build-depends
,但GHC我在Could not find module Load
尝试import Load
时仍抱怨TestLoad.hs
。
我也很好奇如何构建测试以及如何命名文件。这种方法是否正确?
目录结构:
nsga/
src/
Main.hs
Load.hs
test/
TestMain.hs
TestLoad.hs
cabal文件:
executable nsga
main-is: Main.hs
build-depends:
QuickCheck -any,
base -any,
doctest -any
default-language: Haskell2010
hs-source-dirs: src
other-modules:
Load
ghc-options: -ferror-spans -Wall -fsimpl-tick-factor=10
test-suite test-nsga
type: exitcode-stdio-1.0
main-is: TestMain.hs
build-depends:
QuickCheck -any,
base -any,
doctest -any,
HUnit -any,
nsga -any,
Load -any
default-language: Haskell2010
hs-source-dirs: test, src
other-modules:
TestLoad
ghc-options: -ferror-spans
答案 0 :(得分:3)
尝试从Load -any
删除build-depends
行。
build-depends
指的是包的名称,但Load.hs
是模块。您的系统上是否安装了名为Load
的软件包?
FWIW,这对我有用:
文件布局:
├── app
│ ├── Load.hs
│ └── Main.hs
├── src
│ └── Lib.hs
├── test
│ └── Spec.hs
└── test-load.cabal
测试load.cabal:
name: test-load
version: 0.1.0.0
build-type: Simple
extra-source-files: README.md
cabal-version: >=1.10
executable the-app
default-language: Haskell2010
hs-source-dirs: app
main-is: Main.hs
build-depends: base
test-suite spec
default-language: Haskell2010
ghc-options: -Wall
type: exitcode-stdio-1.0
hs-source-dirs: test, app
main-is: Spec.hs
build-depends: base, Load -any
使用:
运行cabal configure
cabal build
cabal test