问题 如何使用堆栈加载ghci中的测试


我用堆栈创建了一个非常简单的项目。它包含:相关cabal文件中的可执行文件,库和测试目标。当我通过stack ghci将代码加载到ghci时,我无法访问那里的测试,即使它们位于单独的模块中。有没有办法以这种方式使用它?


7081
2017-10-08 22:38


起源



答案:


尝试 stack ghci (your project name):(the test suite name)。然后你应该能够进入 main 并且您的测试将运行。

例:

如果.cabal项目文件具有以下值:

name: ExampleProject
...
test-suite Example-test

然后运行命令 stack ghci ExampleProject:Example-test

(编辑@Chris Stryczynski建议)

观看 test 和 src 目录,以便在您重新加载时更新它们 :r, 跑:

stack ghci --ghci-options -isrc --ghci-options -itest ExampleProduct:Example-test

12
2017-10-08 23:09



谢谢!有效! - Konstantin Solomatov
如果你这样做, :r 不会将更改重新加载到您的lib。你知道怎么做吗? :r 重新编译lib和测试? - Sean Clark Hess
@SeanClarkHess有几种方法可以设置测试。您可以通过将正在测试的库添加到测试套件构建依赖项来进行设置,也可以将库源文件夹添加到测试套件hs-source-dirs中。一世 相信  :r 与后者合作而不是前者,但我不确定。很抱歉花了这么长时间才注意到你的问题。 - Libby
我想你需要做一个 stack install 在运行上面的命令之前测试的库,不是吗? - Damian Nadales


答案:


尝试 stack ghci (your project name):(the test suite name)。然后你应该能够进入 main 并且您的测试将运行。

例:

如果.cabal项目文件具有以下值:

name: ExampleProject
...
test-suite Example-test

然后运行命令 stack ghci ExampleProject:Example-test

(编辑@Chris Stryczynski建议)

观看 test 和 src 目录,以便在您重新加载时更新它们 :r, 跑:

stack ghci --ghci-options -isrc --ghci-options -itest ExampleProduct:Example-test

12
2017-10-08 23:09



谢谢!有效! - Konstantin Solomatov
如果你这样做, :r 不会将更改重新加载到您的lib。你知道怎么做吗? :r 重新编译lib和测试? - Sean Clark Hess
@SeanClarkHess有几种方法可以设置测试。您可以通过将正在测试的库添加到测试套件构建依赖项来进行设置,也可以将库源文件夹添加到测试套件hs-source-dirs中。一世 相信  :r 与后者合作而不是前者,但我不确定。很抱歉花了这么长时间才注意到你的问题。 - Libby
我想你需要做一个 stack install 在运行上面的命令之前测试的库,不是吗? - Damian Nadales