2014-09-11 7 views
2

나는 Show을 파생하는 유형이 있습니다.
테스팅에 필요하지만 응용 프로그램의 로직에는 필요하지 않은 개발 용으로 유용합니다. 따라서 테스트가 필요하지 않습니다.HPC의 코드 커버리지에서 쇼 유도를 제외하는 방법은 무엇입니까?

HPC가 테스트에 대해 100 % 적용 범위를 인식하도록하고 싶습니다. 그것을 제외시킬 수있는 방법이 있습니까?
설정이 무엇입니까? 프라그마? 속이는 시험?

seqshow을 시도했지만 처음에는 작동하지 않았습니다. (나중에 문제가 해결되어 답변을 게시했습니다.)

는 또한 테스트 할 때 단지 Show 제외됩니다 매크로 조건을 사용하는 CPP로 확장했지만, quickCheckAll는 좋아하지 않았다 나는 심지어 테스트 -의 경우 실제로 이해할 수있는 (컴파일을하지 않았다 실패).

+0

나는 당신의 질문을 오해하지만, 여기 당신이 사용되지 않습니다 알고 코드를 제외의 예입니다 수도 : http://www.haskell.org/haskellwiki/
다음은 내 타입이 그것을 커버 Haskell_program_coverage # 예제 – idontgetoutmuch

답변

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 
+0

'showList' 만 다루려고 했습니까? 'showList'만으로도'show'와'showsPrec'을 커버하는 것 같습니다. HPC는'\ f g -> (f/= g) ==> (show [f]/= show [g])'와 같은 것을 사용하여'Show' 박스를 체크합니다. –