我想使用 Stack 生成代码覆盖率报告。我运行的命令如下(省略了通过
--test-arguments
传递给测试套件的选项):$ stack test --coverage
这将执行测试,然后输出以下内容:
错误:myproject的测试套件“tests”的覆盖率报告未考虑任何代码。可能的原因之一是您的测试套件构建了库代码(请参见stack issue#1008)。这也可能表明stack或hpc程序存在错误。如果您认为您的覆盖率报告应具有实际意义,请报告此问题。
我认为它应该(这会创建空报告)。我的包的所有组件的GHC选项都是相同的。测试套件无需重新构建库。毕竟,如果Cabal可以生成报告,那么在相同的Cabal配置下,Stack也应该能够生成报告,或者我错了吗?
如建议一样,我在Stack GitHub存储库中打开了一个问题。
一段时间后,我决定创建一个好用的沙盒并使用Cabal来生成报告(你知道,我真的需要看到这份报告)。之前它是可以工作的,但现在我得到了以下错误:
$ cabal sandbox init
… <everything OK>
$ cabal update
… <everything OK>
$ cabal install --only-dependencies --enable-tests
… <everything OK>
$ cabal configure --enable-tests --enable-coverage
… <everything OK>
$ cabal build
… <everything OK>
$ cabal test
Running 2 test suites...
Test suite tests: RUNNING...
Test suite tests: PASS
Test suite logged to: dist/test/myproject-0.1.0-tests.log
hpc: can not find HUnit_DDLSMCRs3jyLBDbJPCH01j/Test.HUnit.Lang in ["./.hpc","./dist/hpc/vanilla/mix/myproject-0.1.0","./dist/hpc/vanilla/mix/tests"]
什么?虽然我之前生成了很多报告,但这个我从来没有见过。似乎有人在上面决定今天不给我这份报告。
你知道如何使用Stack生成覆盖率报告吗?有人成功过吗?
stack
版本是什么?最新版本与hpc
更兼容。我正在使用0.1.6.0
,它基本上可以工作。 - Yurasstack --version
→版本0.1.6.0,Git修订版e22271f5ce9afa2cb5be3bad9cafa392c623f85c(2313次提交)x86_64
。 - Mark Karpov