4

我正在尝试以一种便于我将来开发的方式来构建我的简单项目。基本上我已经习惯cabal init了获取基本的东西,然后我创建了一个 src 文件夹,在里面我创建了一个主文件夹和一个测试文件夹,主要用于保存所有源代码,测试是放置所有测试源代码。在 .cabal 我有以下内容:

.
.
.
.
test-suit Test
  type:           exitcode-stdio-1.0
  hs-source-dirs: src/test
  main-is:        Test.hs
  build-depends:  base

executable Finance
  hs-source-dirs: src/main
  main-is:        Main.hs
  build-depends:  base

只有三个文件 Main.hs、Methods.hs、Test.hs。Methods.hs 导入 Main.hs 以执行,Test.hs 导入 Methods.hs 并测试方法。我的目标是能够做到cabal --enable-tests configure那么cabal build那么cabal test那么cabal install。但是在构建阶段我收到了错误

src/test/Test.hs:2:8:
  Could not find module `Methods`
  Use -v to see a list of the files search for.

我如何让 cabal 知道 Methods.hs 在哪里?另外,有没有更好的方法来设置项目?

4

1 回答 1

3

看起来你只需要添加src/mainhs-source-dirs测试服。

您还可以使用Methods模块创建一个库,并使可执行文件和测试套件都依赖于该库。

有大量关于 hackage 的示例,例如doctest它的测试套件“spec”使用hs-source-dirs,而测试套件“doctests”使用库。第一种方法允许测试不是由库导出的区间函数。

于 2013-01-27T09:16:42.070 回答