当测试文件和被测文件在不同的文件夹中时,如何设置.cabal测试套件

时间:2013-01-27 08:18:45

标签: unit-testing haskell automated-tests cabal cabal-install

我正在努力构建我的简单项目,以便我将来很容易开发。基本上我用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的位置?另外,有没有更好的方法来设置项目?

1 个答案:

答案 0 :(得分:3)

您似乎只需将src/main添加到hs-source-dirs以进行测试。

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

有许多关于黑客的例子,例如doctest测试套装“spec”使用hs-source-dirs,测试套装“doctests”使用库。第一种方法允许测试未由库导出的区间函数。