【问题标题】:xunit assert.equal bug?xunit assert.equal 错误?
【发布时间】:2011-10-28 02:25:24
【问题描述】:

我刚开始使用大量现有代码开发一个新项目,但测试没有通过。我更像是一个 Nunit 人,所以我对 Xunit 的故障点不是很熟悉。

问题出在如下代码中:

fooStringProperty = readSomeFile;
//later
fooStringProperty.ShouldBe(expectedContents)

上面的代码失败,错误如下:

error : Position: First difference is at position 0
Expected: contentsOfFooStringProperty      
Actual:
contentsOfFooStringProperty

基本上,它以某种方式获得了这个换行符,我不知道如何。我在整个代码库中都有很多这样的失败,而且它适用于其他人,所以我想知道这是否是一些 xunit 版本问题?

编辑:这完全是 mac 和 windows 之间的 CRLF 问题。问题解决了:)

【问题讨论】:

  • 您的代码中更有可能存在错误。是时候拿出旧的调试器,看看发生了什么。 xUnit 不太可能在这里受到责备。
  • 您是否遇到了平台差异? (\r\n vs. \n 行尾?)这是什么运行时版本/操作系统?
  • Select Isn't Broken(尤其是当您的用户名接近于 Occam Razor 的字谜时,Oren Mazor :))跨度>

标签: .net xunit


【解决方案1】:

xUnit 似乎不太可能注入换行符。出于某种完全其他原因,您似乎更有可能确实遇到了流氓换行符。

我建议您通过调试代码并检查调试器中的值来诊断此问题。在断言行上设置一个断点,看看它是否适合您。假设它真的 在那个时候被破坏了,在你获取/读取/计算每个值的地方放置一个断点。基本上应用正常步骤来解决意外行为 - 忽略 xUnit 方面。

【讨论】:

  • 这也是我的正常假设,除了这段代码在其余时间里工作得很好。只在我的机器上坏了……清洁新机器。
  • @OrenMazor: 这不是 xUnit 的错 :) 你能调试单元测试吗?如果没有,您将需要通过日志记录进行调试,这会稍微痛苦一些。我敢肯定它会变成环保的东西。
  • 我完全同意。它几乎可以保证 100% 环保。我只是想在调试的同时在这里问,因为我对 xunit 了解不多,想要第二个意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 2016-05-01
  • 2020-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
相关资源
最近更新 更多