首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有文件相关测试的HUnit测试

带有文件相关测试的HUnit测试
EN

Stack Overflow用户
提问于 2013-05-08 17:48:43
回答 1查看 195关注 0票数 0

我有一个lexer,并希望通过一组已知的好测试用例来测试它。这些文件保存在子目录./test_src/中,每个子目录都有一个扩展

我想做的是找到所有相关测试用例的路径:

代码语言:javascript
复制
getTestFiles :: IO [FilePath]
find always (extension ==? ".txt") "/path/to/test_src/"

并创建一个包含HUnit TestList的HUnit TestCases,每个断言都是通过以下代码创建的

代码语言:javascript
复制
testMyLexer :: IO FilePath -> Assertion

与…有关的东西

代码语言:javascript
复制
myTest :: [IO FilePath] -> Test
myTest = TestList $ fmap TestCase $ fmap testMyLexer 

在我的方法中,我似乎失败的地方是,这似乎首先需要折叠函数,然后映射其结果:

代码语言:javascript
复制
unableToDoThis :: IO [FilePath] -> [IO FilePath]

我强烈怀疑我所遵循的方法是不可能的,因为它似乎需要逃离IO Monad,所以我要问的是:

  1. 这种方法可行吗?如果是的话,我遗漏了什么?
  2. 如果没有,你会如何解决这个问题?避免在所有测试用例中进行硬编码是非常常见的。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-08 18:21:16

通常,如果您在参数中得到包装的IO a值,那么您可能做错了什么。testMyLexermyTest都可以是纯的,所以

代码语言:javascript
复制
testMyLexer :: IO FilePath -> Assertion
myTest :: [IO FilePath] -> Test

代码语言:javascript
复制
testMyLexer :: FilePath -> Assertion
myTest :: [FilePath] -> Test

那么,这只是一个使用绑定从getTestFiles提取[FilePath]的问题。

代码语言:javascript
复制
do
    files <- getTestFiles
    runTestTT $ myTest files
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16447072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档