Haskell初学者在这里。
我正在努力寻找一种运行我在.cabal
文件中定义的测试套件的好方法。鉴于您在test-suite
文件中添加了.cabal
个部分,我希望您可以使用stack runtests
这样的单个命令运行所有部分。
我找到的最佳答案是: Haskell Stack Ghci test-suite建议您必须运行
stack ghci --test module:test:libtests
然而,有两件事让我很恼火,我认为必须有更好的方法。
stack ghci --test module:test:libtests
很麻烦。如果我在项目变大时有更多的测试套件,我不想这样做。main
。这不会缩放。是不是有更好的方法来为堆栈项目运行测试套件?当然我可以做一些shell脚本,但是hey stack应该知道如何运行我的测试,我在.cabal
文件中指定了所有内容。
我尝试stack runghc --test
,但这没有用。
项目设置:
.
├── app
│ └── Main.hs
├── LICENSE
├── README.md
├── Setup.hs
├── src
│ ├── Lib.hs
│ └── WordNumber.hs
├── stack.yaml
├── test
│ └── Spec.hs
└── WordNumber.cabal
WordNumber.cabal
name: WordNumber
version: 0.1.0.0
-- synopsis:
-- description:
homepage: https://github.com/githubuser/WordNumber#readme
license: BSD3
license-file: LICENSE
author: Author name here
maintainer: example@example.com
copyright: 2017 Author name here
category: Web
build-type: Simple
extra-source-files: README.md
cabal-version: >=1.10
library
hs-source-dirs: src
exposed-modules: Lib, WordNumber
build-depends: base >= 4.7 && < 5
default-language: Haskell2010
executable wordnumber
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base
, WordNumber
default-language: Haskell2010
test-suite wordnumber-test
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
build-depends: base
, WordNumber
, hspec
ghc-options: -threaded -rtsopts -with-rtsopts=-N
default-language: Haskell2010
更新:
其实我觉得自己找不到答案有点愚蠢。它是stack test
或stack build --test
,也有记录。
然而,对于关注HaskellBook的人来说,可能并不那么明显。出于某种原因,测试章节中的所有测试都以繁琐的方式执行,并且从未提及使用stack test
的运行测试。
答案 0 :(得分:9)
stack test
运行位于.cabal文件中的测试。如果需要,它会运行stack build
,因此您无需在测试前手动构建。
进一步了解:https://docs.haskellstack.org/en/stable/GUIDE/#stack-test