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

Expecto如何实时记录单测试状态 定位引发进程崩溃的用例

Expecto 实时输出日志定位崩溃测试用例配置方法

Expecto 默认会缓存所有测试结果,等全部测试执行完成后再统一输出,遇到会直接打崩测试进程的偶发flaky用例时,无法拿到崩溃前的执行记录,通过以下配置即可开启实时日志输出定位问题用例:

  • 开启单测结果实时打印配置
    将测试运行配置中的printTestCaseResultImmediately参数设为true,配置生效后每个测试用例执行结束后会立刻打印结果,不会做全局缓存。如果怀疑是并行执行触发的偶发问题,可以同时把parallel参数设为false,改成单线程顺序执行,进一步降低定位难度。
    直接运行测试可执行文件的场景,配置示例:
    open Expecto
    
    [<EntryPoint>]
    let main argv =
        let customConfig = {
            defaultConfig with
                printTestCaseResultImmediately = true
                parallel = false
        }
        runTestsInAssembly customConfig argv
    
  • dotnet test 命令行场景额外配置
    如果是通过dotnet test命令调用Expecto测试适配器执行用例,执行命令时追加详细控制台日志参数,关闭输出缓存:
    dotnet test --logger "console;verbosity=detailed"
    
  • 兜住进程级崩溃场景的前置日志配置
    如果崩溃是段错误、非法内存访问这类Expecto全局异常捕获无法拦截的场景,可以给配置增加testCaseRun钩子,在每个用例开始执行前就打印当前用例名称,哪怕进程直接崩溃,控制台最后一行输出的就是触发故障的用例。配置示例:
    let customConfig = {
        defaultConfig with
            printTestCaseResultImmediately = true
            testCaseRun = fun testName testFunc ->
                printfn $"[TEST START] {testName}"
                testFunc()
    }
    

配置完成后重新执行测试,崩溃前控制台输出的最后一个测试用例,就是导致进程退出的flaky用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:09:26