我使用 Cabal 来运行我的测试。
以下是它在文件中的配置方式.cabal:
test-suite test
type: exitcode-stdio-1.0
main-is: Test.hs
build-depends: base >= 4.7 && < 4.8, containers >=0.5 && <0.6, ghc, test-framework >=0.8 && <0.9, QuickCheck >=2.7 && <2.8, HUnit >=1.2 && <1.3, test-framework-hunit, test-framework-quickcheck2
default-language: Haskell2010
ghc-options: -Wall -fhpc
Run Code Online (Sandbox Code Playgroud)
当我第一次运行测试时,一切正常。
但是,如果我更改测试并再次运行它们,则会出现以下错误:
Hpc failure: module mismatch with .tix/.mix file hash number
(perhaps remove test.tix file?)
Run Code Online (Sandbox Code Playgroud)
所以,我需要手动删除该.tix文件。
有没有办法摆脱这个问题?
顺便问一下,有没有办法让这个.tix文件生成在dist目录中而不是根目录中?
如何配置我的 Cabal 文件以与 HPC 良好配合(即在dist目录中包含生成的 HTML 文件)?
谢谢。
要cabal生成代码覆盖率报告,您可以在配置包时启用它:
cabal configure --enable-coverage
Run Code Online (Sandbox Code Playgroud)
然后照常运行测试:
cabal test
Run Code Online (Sandbox Code Playgroud)
请注意,您可能需要使用--enable-library-coverage较旧的cabal. 此外,IIRChpc在 cabal 中的集成也被破坏了ghc-7.6。