【发布时间】:2014-09-22 08:32:17
【问题描述】:
举个例子:
string x = null;
var y = String.Empty;
Assert.AreEqual(x, y); // test fails!
Assert.AreEqual(x ?? "", y ?? ""); // passes, but ugly!
我知道 null 和空字符串是不一样的,但对于我的特定应用程序,它们基本上是相同的。我的问题是 - 是否有任何快捷方式可以以相同的方式处理 null 和空字符串?否则我将面临全面使用空合并运算符(有点难看!)
背景
关于这个问题的来源,我正在为一个项目编写集成测试。基本上我将值保存到数据库中,然后再次加载它们并检查两者是否匹配。某些值在保存时是空字符串,但在通过 EF 加载时它们会作为空值返回。这会导致我的一些集成测试失败。
编辑/注释 - 我用于测试的值是随机的。这意味着有时该值将为空,但有时它们将被填充。请记住,我必须在每个字符串比较中使用空合并(因此提出了一种缩写方式的问题)。
【问题讨论】:
-
@reggaeguitar 如果您阅读了我不是在询问字符串比较的问题。我在问如何缩写 nUnit 调用。
-
你是对的,我很抱歉。我只会创建一个包含空合并运算符的方法并在您的 Asserts 中调用它
-
我不确定 nunit 是否支持
IEqualityComparer,如果支持,您可以通过自定义比较器。否则创建自定义比较器并像Assert.IsTrue(yourComparer.Equals(x,y))一样使用它 -
以 X 和 Y 作为参数并封装断言的扩展方法怎么样?
-
Assert.AreEqual(x + "", y + "");会少两个字节丑:)。