我在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测试浏览器,并没有解决问题。
我已经在2017.3。即使当我调整窗口大小时,消息也会被截断,始终在相同的位置(中间)。 他们可能已经修复了类似的MSTest,也许?我会在控制台上试试看看它是否是xUnit问题。 – KangarooWest
正如所料,这在控制台中是一样的,所以这是一个xUnit问题。起初,我想通过手动添加一条消息来解决这个问题,但是,唉,他们也不支持开箱即用: https://stackoverflow.com/questions/42203169/how-to-implement-xunit-descriptive-assert-message 我可以通过做Assert.True,它有一个消息过载,但是这是一个解决方法我真的很讨厌这样做:( – KangarooWest
你看起来是对的,我会看看我是否可以提交一个拉请求来允许这个配置。https://github.com/xunit/xunit/blob/d2935cc4bd9d77df49239f2e6a7174dbe09d1e47/src/ xunit.runner.visualstudio/Sinks/VsDiscoverySink.cs – ovation22