首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Assert.AreEqual -空字符串与空字符串

Assert.AreEqual -空字符串与空字符串
EN

Stack Overflow用户
提问于 2014-07-30 15:47:11
回答 1查看 20.8K关注 0票数 7

以下列例子为例:

代码语言:javascript
运行
复制
string x = null;
var y = String.Empty;
Assert.AreEqual(x, y);             // test fails!
Assert.AreEqual(x ?? "", y ?? ""); // passes, but ugly!

我理解空字符串和空字符串是不一样的,但是对于我的特定应用程序,它们基本上是相同的。我的问题是--有什么快捷方式可以用同样的方式处理空字符串和空字符串吗?否则,我将面临整个空合并操作符的使用(有点难看!)

背景

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

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

EN

Stack Overflow用户

发布于 2014-07-30 17:10:56

德鲁: AlexD已经走上正轨了,尽管他并没有把它完全拔出来。示例:

代码语言:javascript
运行
复制
    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));
    }

在你的例子中,你可以用

代码语言:javascript
运行
复制
Assert.AreEqual(string.IsNullOrEmpty(x), string.IsNullOrEmpty(y));

代码语言:javascript
运行
复制
Assert.IsTrue(AreSame(x, y));

丑?当然,但你至少可以把丑抽象出来一点。丑得像

代码语言:javascript
运行
复制
Assert.AreEqual(x ?? "", y ?? ""); // passes, but ugly!

???不确定。取决于你如何看待它。

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25041241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档