导入模块进行测试

时间:2016-05-25 10:59:40

标签: haskell testing

我在导入模块进行测试时遇到了一些问题。我想在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

1 个答案:

答案 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