Haskell Tasty测试如何实现执行进度实时汇报?
配置Tasty v1.5启用实时进度汇报定位无限循环测试
Tasty v1.5的进度汇报功能可以解决你遇到的无限循环测试无法定位的问题,配置方式分两种:
命令行参数方式
直接在启动测试时添加--progress参数,Tasty会实时输出每个测试的运行状态:
- 测试启动时输出
[RUNNING] <测试名称> - 测试完成时输出
[OK]/[FAILED] <测试名称>
如果使用Stack运行测试:
stack test --test-arguments="--progress"
如果使用Cabal运行测试:
cabal test --test-option="--progress"
代码内静态配置方式
如果你想在代码里固定启用进度汇报,需要引入Test.Tasty.Ingredients.ProgressReporter模块,将progressReporter添加到测试入口的配料列表中:
import Test.Tasty import Test.Tasty.Ingredients.ProgressReporter (progressReporter) import Test.Tasty.HUnit -- 根据你使用的测试框架调整 main :: IO () main = defaultMainWithIngredients [progressReporter, listingTests] tests where tests = testGroup "你的测试组" [ testCase "正常测试" (return ()) , testCase "可能无限循环的测试" (forever (return ())) -- 示例问题测试 ]
listingTests是Tasty默认的测试列表输出配料,和progressReporter搭配使用,既能看到整体测试结构,又能实时获取运行进度。
启用进度汇报后,一旦出现无限循环,最后一条[RUNNING]日志对应的测试就是问题所在,直接定位无需等所有测试结束。
内容的提问来源于stack exchange,提问作者user2667523
相关产品推荐
相关产品推荐

