在nUnit下包含的不区分大小写的比较

Kon*_*ten 12 c# nunit assert contains

我试图断言列表包含某个字符串.由于我需要对条件不敏感地进行评估,因此我使用了一种解决方法(本篇博文中的内容).

但是,我想知道为什么似乎没有办法让Assert.Contains方法执行比较而不考虑区分大小写.或者有办法做到这一点?(当我用Google搜索它时,我只得到关于Assert的约束的点击.在nUnit的官方页面上的那个方法.)

aev*_*tas 16

有没有办法来指定IGNORECASEAssert.Contains.无论是被忽视还是有意的东西,我都不知道.但是,您可以使用

StringAssert.AreEqualIgnoringCase(left, right);
Run Code Online (Sandbox Code Playgroud)

在你的单元测试中达到相同的效果.

或者,如果你想坚持Assert.Foo()"主题",你可以做这样的事情:

Assert.IsTrue(string.Equals(left, right, StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)

或者,因为Contains对待数组:

Assert.IsTrue(list.Any(element => element.ToUpper() == "VILTERSTEN"));
Run Code Online (Sandbox Code Playgroud)

你调用ToUpper()左右字符串操作数的地方,这也有效地使比较忽略了大小写.OrdinalIgnoreCase是为了确保文化的某些角落案例(阅读:土耳其语)不会导致意外结果.如果您有兴趣阅读,请查看土耳其测试.


pri*_*tor 11

nUnit确实提供了它,它读取:

Assert.That("red,green,blue".Split(','), Contains.Item("RED").IgnoreCase);
Run Code Online (Sandbox Code Playgroud)


Nik*_*iaz 8

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

Assert.That(new[] {"red", "green", "blue"}, Does.Contain("RED").IgnoreCase);
Run Code Online (Sandbox Code Playgroud)