nUnit下的Contains中不区分大小写的比较
本文关键字:大小写 比较 不区 下的 Contains nUnit | 更新日期: 2023-09-27 18:12:11
我试图断言列表包含某个字符串。因为我需要对条件进行大小写不敏感的评估,所以我使用了一种变通方法(这篇博客文章中的一些内容)。
然而,我想知道为什么似乎没有办法使断言。包含方法执行比较而不考虑大小写敏感性。或者有别的办法吗?(当我在谷歌上搜索时,我只找到了Assert的约束。nUnit的官方页面上的方法
无法在Assert.Contains
中指定ignoreCase。我不知道这是被忽视的还是有意为之。但是,您可以使用
StringAssert.AreEqualIgnoringCase(left, right);
,以获得相同的结果。
或者,如果您希望坚持使用Assert.Foo()
"主题",您可以这样做:
Assert.IsTrue(string.Equals(left, right, StringComparison.OrdinalIgnoreCase));
或,因为Contains
处理数组:
Assert.IsTrue(list.Any(element => element.ToUpper() == "VILTERSTEN"));
,其中在左和右字符串操作数上调用ToUpper()
,这也有效地使比较忽略大小写。OrdinalIgnoreCase
是为了确保文化的一些极端情况(如土耳其语)不会导致意想不到的结果。如果你有兴趣阅读这方面的内容,可以看看火鸡测试
在NUnit 3中,可以使用以下语法:
Assert.That(new[] {"red", "green", "blue"}, Does.Contain("RED").IgnoreCase);
nUnit提供了这个,它读为:
Assert.That("red,green,blue".Split(','), Contains.Item("RED").IgnoreCase);