【发布时间】:2012-06-12 16:04:23
【问题描述】:
我想为 Parsec 解析器套件编写测试。下面是一个我想用 QuickCheck 测试的解析器的简单示例:
identifier = do
c <- letter
cs <- many (alphaNum <|> oneOf identSymbols)
skipSpaces
return $ Ident $ c:cs
因此,理想情况下,我希望 QuickCheck 生成有效标识符并确保我得到正确的结果,同时生成无效标识符并确保它们返回 ParseError。是否有任何实用程序可以使这种事情变得更容易?有没有办法可以“反向运行我的解析器”来生成这样的输入?
一般来说,该解析器的一套好的 QuickCheck 测试应该是什么样的?在某种程度上,似乎我基本上必须在 QuickCheck 中复制解析器的逻辑才能实现彻底的测试。这真的是个好主意吗,或者这可能是 HUnit 等更传统的工具比 QuickCheck 更适合的情况?
【问题讨论】:
标签: testing haskell parsec quickcheck