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

C# nUnit下Contains中不区分大小写的比较,c#,nunit,contains,assert,C#,Nunit,Contains,Assert,我试图断言列表包含某个字符串。因为我需要对条件进行不敏感的评估,所以我使用了一个变通方法(附带的东西) 但是,我想知道为什么似乎没有一种方法可以让Assert.Contains方法在不考虑大小写敏感性的情况下执行比较。还是有办法做到这一点?(我在谷歌上搜索时,只找到了Assert的约束。nUnit的官方页面上的该方法。)无法在Assert.Contains中指定ignoreCase。我不知道这是被忽视的还是有意的。但是,您可以使用 StringAssert.AreEqualIgnoringCas

我试图断言列表包含某个字符串。因为我需要对条件进行不敏感的评估,所以我使用了一个变通方法(附带的东西)


但是,我想知道为什么似乎没有一种方法可以让Assert.Contains方法在不考虑大小写敏感性的情况下执行比较。还是有办法做到这一点?(我在谷歌上搜索时,只找到了Assert的约束。nUnit的官方页面上的该方法。)

无法在
Assert.Contains中指定ignoreCase。我不知道这是被忽视的还是有意的。但是,您可以使用

StringAssert.AreEqualIgnoringCase(左、右);
在单元测试中实现相同的结果

或者,如果您希望坚持使用
Assert.Foo()
“主题”,可以执行以下操作:

Assert.IsTrue(string.Equals(left, right, StringComparison.OrdinalIgnoreCase));
或者,由于
包含
数组:

Assert.IsTrue(list.Any(element => element.ToUpper() == "VILTERSTEN"));

其中,对左字符串操作数和右字符串操作数调用
ToUpper()
,这实际上使比较也忽略大小写
OrdinalIgnoreCase
是为了确保文化的某些角落案例(阅读:Turkish)不会导致意外结果。如果您有兴趣了解这方面的内容,请看一看。

nUnit确实提供了这方面的内容,内容如下:

Assert.That("red,green,blue".Split(','), Contains.Item("RED").IgnoreCase);

在NUnit 3中,可以使用以下语法:

Assert.That(new[]{“red”,“green”,“blue”},dos.Contain(“red”).IgnoreCase);

您正在使用nUnit吗?如果是这样,它包含一个
StringAssert.AreEqualIgnoringCase
方法,您可以在这里使用。或者,您可以将比较中的两个字符串作为另一个绷带。@aevitas-Hmm。。。这打破了断言。有些人看起来。。。但如果这是推荐的方法,那就这样吧。至于我深入的问题:你知道为什么没有包含一个额外的参数来进行比较控制吗?我不知道,这可能是一个实际的原因,但也可能被忽略。如果您真的想坚持使用
Assert.Some
外观,可以使用
Assert.IsTrue(string.Equals(left、right、StringComparison.OrdinalIgnoreCase))@aevitas这就是我正在做的,呵呵。我只是担心有一个我不知道的原因会有人来咬我坐着的装置。请把你的想法作为回答,这样,如果没有人比你更出色的话,我就可以接受答案。@aevitas它达到99%。其余的,我冒昧地补充了一下。哇!现在,你的信任度提高了10分。祝贺你!:)+土耳其队1分。我以为你指的是那只鸟,呵呵。非常有趣的文章。不再支持使用3.10和.IgnoreCore。最好将下面的答案与nunit 3一起使用。这很好用,可读性好,遵循框架机制,我认为这应该是公认的答案。