我想使用 Stack 生成代码覆盖率报告。我运行的命令相当于(省略通过 传递给测试套件的选项--test-arguments
):
$ stack test --coverage
这将执行测试,然后输出以下内容:
错误:myproject 的测试套件“测试”的覆盖率报告没有考虑任何代码。一个可能的原因是您的测试套件构建了库代码(请参阅堆栈问题 #1008)。它也可能表明堆栈或 hpc 程序中的错误。如果您认为您的覆盖率报告应该有有意义的结果,请报告此问题。
我认为它应该(这会创建空报告)。我的包的所有组件的 GHC 选项都是相同的。不需要测试套件来重建库。毕竟,如果 Cabal 可以生成报告,Stack 应该能够在相同的 Cabal 配置下做到这一点,还是我弄错了?
我 按照建议在 Stack GitHub repo上打开了一个问题。
过了一段时间,我决定创建一个好的旧沙箱并使用 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 生成覆盖率报告吗?有人成功了吗?