gpt4 book ai didi

c# - Assert.AreEqual - Null 与空字符串

转载 作者:行者123 更新时间:2023-11-30 16:58:37 24 4
gpt4 key购买 nike

举个例子:

string x = null;
var y = String.Empty;
Assert.AreEqual(x, y); // test fails!
Assert.AreEqual(x ?? "", y ?? ""); // passes, but ugly!

我知道 null 和空字符串不一样,但对于我的特定应用程序,它们基本相同。我的问题是 - 是否有任何快捷方式可以以相同的方式处理 null 和空字符串?否则我将面临到处使用 null 合并运算符(有点难看!)

背景

为了了解这个问题的背景,我正在为一个项目编写集成测试。基本上我将值保存到数据库中,然后再次加载它们并检查两者是否匹配。有些值在保存时是空字符串,但在通过 EF 加载时它们将作为空值返回。这导致我的许多集成测试失败。

编辑/注意 - 我用于测试的值是随机的。这意味着有时该值将为空,但有时它们会被填充。考虑到这一点,我将不得不在每个字符串比较中使用 null coalescent(因此有一个简化方法的问题)。

最佳答案

Drew:AlexD 已经步入正轨,尽管他还没有完全查明。示例:

    static void Main(string[] args)
{
Console.WriteLine(AreSame("", ""));
Console.WriteLine(AreSame("", null));
Console.WriteLine(AreSame(null, ""));
Console.WriteLine(AreSame(null, null));

Console.Read();
}

private static bool AreSame(string x, string y)
{
return (string.IsNullOrEmpty(x) == string.IsNullOrEmpty(y));
}

在你的情况下,你可以使用

Assert.AreEqual(string.IsNullOrEmpty(x), string.IsNullOrEmpty(y));

或者

Assert.IsTrue(AreSame(x, y));

丑陋?当然可以,但你至少可以抽象出一点丑陋之处。丑如

Assert.AreEqual(x ?? "", y ?? ""); // passes, but ugly!

???没有把握。取决于您如何看待它。

关于c# - Assert.AreEqual - Null 与空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25041241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com