xUnit 在测试资源管理器中显示截断的预期和实际

xUnit showing truncated Expected and Actual in Test Explorer

我将 xUnit 与 Visual Studio Test Explorer 一起使用,当 Assert.Equal() 中出现错误时,我得到的是实际版本和预期版本的截断版本。

例如,

Xunit.Sdk.EqualException
Assert.Equal() Failure
Expected: List<Result> 
[Result { 
Status = StatusEnumValue1, 
Message = "The request or response type contains a special ty"..., 
Path = "1234" }]
Actual:   WhereListIterator<Result> 
[Result { 
Status = StatusEnumValue1, 
Message = "The request or response type contains a special ty"..., 
Path = "1234" }]

此测试失败,因为 Messages 不同,但鉴于 Messages 被截断,我看不到它们与测试资源管理器实际不同的部分。即使我复制出来,它仍然被截断。

这是 xUnit 的已知缺点吗?我可以继续调试测试或使用 WriteLine 来比较 Message,但我很惊讶 xUnit 框架没有办法显示完整的响应。我也试过Resharper test explorer,也没有解决问题。

这似乎是 Visual Studio 的限制。 Visual Studio 2017.3.

似乎解决了这个问题

https://developercommunity.visualstudio.com/content/problem/30703/test-explorer-result-text-truncated.html

事实证明这是一个 xUnit 问题。

ovation22 在控制字符数硬性限制的代码的确切位置下方指向 own。

我使用 FluentAssertions 库绕过了这个问题。来自与 FluentAssertions 一起使用的 xUnit 的错误不会截断任何错误消息。

仅使用 xUnit 和 Visual Studio 查看完整信息的方法非常麻烦。我不熟悉 FluentAssertions,但它听起来确实是一种更简单的方法。

以下是仅使用 Visual Studio 和 xUnit 查找未截断信息的步骤:

  1. 右键单击失败的测试(Ctrl+r、Ctrl+t 也可以)
  2. Visual Studio
  3. 中将显示带有异常的小弹出窗口
  4. 点击“查看详情”
  5. 这将弹出另一个名为 QuickWatch 的屏幕,其中包含完整未截断形式的所有相关信息。