如何从HPC的代码覆盖中排除Show的派生?

时间:2014-09-11 22:07:57

标签: haskell testing automated-tests code-coverage quickcheck

我的类型派生Show 它对开发和开发很有用。测试所需,但对于我的应用程序的逻辑不是必需的,所以它不需要任何测试。

我想让HPC意识到这一点,以便为我的测试获得100%的覆盖率。有没有办法排除它?
一个设置?一个pragma?欺骗它的测试?

我尝试了seq show但它起初没有工作(之后它确实解决了问题,我发布了一个答案,看到了它)。

我还尝试使用CPP进行扩展,以便在测试时使用会排除Show的宏条件,但是quickCheckAll并不喜欢这种情况而且我甚至都没有通过编译(在测试失败的情况下实际可以理解)。

1 个答案:

答案 0 :(得分:1)

我最终seq编辑所有Show所提供的内容,所以GHC会看到我去过那里,并承认我已经覆盖了它。
以下内容涵盖我的类型:

prop_fieldShow :: (Show i, Show a) => Field i a -> Bool
prop_fieldShow field = showList [field] `seq` showsPrec 0 field `seq` show field `seq` True