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

F#搭配xUnit如何在Visual Studio测试资源管理器成功用例打印输出

问题背景

正在测试一款通过网络向数据库请求数据的客户端应用程序。此前查阅过Stack Overflow上的同类问题,但相关方案发布时间较早,彼时Hedgehog、Swensen.Unquote这类优质NuGet包尚未推出(本人为单元测试领域新手)。

核心需求:

  • 找到无需创建F#类对象的实现方式,让xUnit可以向Visual Studio测试资源管理器打印输出
  • 打印输出的操作不能将测试强制标记为错误状态

现存问题:当前使用的代码仅在测试处于错误状态时,才会打印服务端返回的就诊记录数据,无法在测试通过的正常状态下输出返回值。

初始实现代码

module Tests

open Xunit
open Hedgehog
open Swensen.Unquote
open System
open Stargate.XI.Client

[<Fact>]
let ``Get Visits`` () =
   
   let visits = Scheduling.getVisits (new DateTime(2022,04,22))

   test <@ printfn "%O" visits = () @>
实现方案

直接在测试函数的签名中加入xUnit提供的ITestOutputHelper类型参数,xUnit会自动完成依赖注入,无需手动创建类或实例化该对象,调用其WriteLine方法即可输出内容到测试资源管理器,且不会将测试标记为失败。

修改后可正常运行的代码如下:

[<Fact>]
let ``Get Visits`` (output: Xunit.Abstractions.ITestOutputHelper) =
   let visits = Scheduling.getVisits (new DateTime(2022,04,22))
   output.WriteLine(sprintf "%A" visits)      
   Assert.True(true)

提示:使用sprintf "%A"可以格式化打印F#中的记录类型、联合类型等特殊结构,比%O的默认ToString输出可读性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:33:16