You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试时如何在Stack中搭配EKG使用并传递+RTS -T参数?

给Stack测试程序传递+RTS -T参数的方法

我来帮你搞定这个问题——要给stack test运行的测试程序传递+RTS -T参数(用来启用GC统计配合ekg),其实有几种实用的方式,不管是临时命令行调用还是持久化配置都能满足需求:

1. 命令行直接传递参数

这是最直接的临时解决方案,在stack test后面加上--test-arguments选项,把RTS参数传进去就行:

stack test --test-arguments="+RTS -T"

如果你的测试程序本身还需要其他参数,可以用-RTS把测试参数和RTS参数分隔开,比如:

stack test --test-arguments="--verbose +RTS -T -RTS"

这里的+RTS和-RTS是GHC运行时的分隔符,确保-T被正确传递给程序的运行时系统,而不是被测试框架当成测试参数处理。

2. 在stack.yaml中持久化配置

如果你不想每次运行测试都手动敲参数,可以在项目的stack.yaml文件里添加全局的测试参数配置:

test-options:
  arguments: "+RTS -T"

这样以后每次执行stack test,都会自动给所有测试程序带上+RTS -T参数,一劳永逸。

3. 针对特定测试套件配置参数

如果只想给某个特定的测试包传递这个参数,可以在stack.yaml的packages部分单独配置:

packages:
  - .
  - package: your-test-target-name
    test-options:
      arguments: "+RTS -T"

把your-test-target-name换成你实际的测试目标名称即可。

另外补充一下:你提到的--profile和--trace是Stack本身的选项,用于启用整个构建/测试过程的 profiling 或 tracing,而我们这里需要的是给测试程序本身传递运行时参数,所以用上面的--test-arguments或者配置文件里的arguments字段才是正确的路径。

内容的提问来源于stack exchange,提问作者Damian Nadales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:08:21