繁体   English   中英

使用文件相关测试进行HUnit测试

[英]HUnit testing with file dependent tests

我有一个词法分析器,希望对一组已知的良好测试用例进行测试。 这些子目录中的./test_src/举行,每个人都有一个扩展测试名 .TXT

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

getTestFiles :: IO [FilePath]
find always (extension ==? ".txt") "/path/to/test_src/"

并创建一个包含HUnit TestCases的HUnit TestList,每个HCas TestCases都具有通过函数沿以下行创建的声明

testMyLexer :: IO FilePath -> Assertion

类似于

myTest :: [IO FilePath] -> Test
myTest = TestList $ fmap TestCase $ fmap testMyLexer 

我的方法似乎失败的地方在于,这似乎首先需要以下功能,然后映射其结果:

unableToDoThis :: IO [FilePath] -> [IO FilePath]

我非常怀疑我所遵循的方法是不可能的,因为它似乎需要转义IO Monad,所以我要问的是:

  1. 这种方法可行吗,如果可以的话,我还缺少什么?
  2. 如果没有,您将如何解决这个问题? 在所有测试用例中避免硬编码必须非常普遍

通常,如果将IO a值包装在参数中,那么您可能做错了。 testMyLexermyTest都可以是纯myTest ,因此可以代替

testMyLexer :: IO FilePath -> Assertion
myTest :: [IO FilePath] -> Test

testMyLexer :: FilePath -> Assertion
myTest :: [FilePath] -> Test

然后,只需使用getTestFiles来提取您的[FilePath]

do
    files <- getTestFiles
    runTestTT $ myTest files

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM