我有一个词法分析器,并希望针对一组已知的良好测试用例对其进行测试。它们保存在子目录./test_src/中,每个都有扩展名testname .txt
我想做的是获取所有相关测试用例的路径:
getTestFiles :: IO [FilePath]
find always (extension ==? ".txt") "/path/to/test_src/"
并创建一个包含 HUnit TestCases 的 HUnit TestList,每个都有一个通过函数创建的断言,如下所示
testMyLexer :: IO FilePath -> Assertion
类似的东西
myTest :: [IO FilePath] -> Test
myTest = TestList $ fmap TestCase $ fmap testMyLexer
我的方法似乎失败的地方是,这似乎首先需要以下函数,然后映射其结果:
unableToDoThis :: IO [FilePath] -> [IO FilePath]
我强烈怀疑我所遵循的方法是不可能的,因为它似乎需要逃避 IO Monad,所以我要问的是:
- 这种方法是否可行,如果是的话,我错过了什么?
- 如果没有,你将如何解决这个问题?在所有测试用例中避免硬编码一定很常见