nUnit下的Contains中不区分大小写的比较

本文关键字:大小写 比较 不区 下的 Contains nUnit | 更新日期: 2023-09-27 18:12:11

我试图断言列表包含某个字符串。因为我需要对条件进行大小写不敏感的评估,所以我使用了一种变通方法(这篇博客文章中的一些内容)。

然而,我想知道为什么似乎没有办法使断言。包含方法执行比较而不考虑大小写敏感性。或者有别的办法吗?(当我在谷歌上搜索时,我只找到了Assert的约束。nUnit的官方页面上的方法

nUnit下的Contains中不区分大小写的比较

无法在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);