2017-09-13 26 views
0

我在Visual Studio Test Explorer中使用xUnit,并且在Assert.Equal()中出现错误时,我得到Actual和Expected的截断版本。xUnit在测试资源管理器中显示截短的预期和实际值

例如,

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" }] 

因为Message s为不同的测试失败,但鉴于Message s为截断,我不能看到他们实际上从测试浏览器的不同部分。即使我将它复制出来,它仍然被截断。

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

回答

0

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

ovation22积分下面的代码的确切位置,控制这个字符数量的硬性限制的确切位置。

我已使用FluentAssertions库代替绕过此问题。与FluentAssertions一起使用的xUnit中的错误不会截断任何错误消息。

0

这似乎是Visual Studio的限制。这看起来是用Visual Studio 2017.3解决的。

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

+0

我已经在2017.3。即使当我调整窗口大小时,消息也会被截断,始终在相同的位置(中间)。 他们可能已经修复了类似的MSTest,也许?我会在控制台上试试看看它是否是xUnit问题。 – KangarooWest

+0

正如所料,这在控制台中是一样的,所以这是一个xUnit问题。起初,我想通过手动添加一条消息来解决这个问题,但是,唉,他们也不支持开箱即用: https://stackoverflow.com/questions/42203169/how-to-implement-xunit-descriptive-assert-message 我可以通过做Assert.True,它有一个消息过载,但是这是一个解决方法我真的很讨厌这样做:( – KangarooWest

+1

你看起来是对的,我会看看我是否可以提交一个拉请求来允许这个配置。https://github.com/xunit/xunit/blob/d2935cc4bd9d77df49239f2e6a7174dbe09d1e47/src/ xunit.runner.visualstudio/Sinks/VsDiscoverySink.cs – ovation22

相关问题