c# - 使用OR条件断言

时间:2013-06-28 07:16:40

标签: c# unit-testing assertions

我正在检查三个字符的字符串

Assert.AreEqual(myString.Substring(3,3), "DEF", "Failed as DEF  was not observed");

事情就在这里它可以是DEFRES,现在要处理这个我能想到的是以下

bool check = false;
if( myString.Substring(3,3) == "DEF" || myString.Substring(3,3) == "RED" ) 
check = true;

Assert.IsTrue(check,"Failed");
Console.WriteLine(""Passed);

我有办法在Assert

中使用一些OR事物

p.s我正在编写单元测试&是的,我将使用三元运算符....

3 个答案:

答案 0 :(得分:5)

Assert.IsTrue((myString.Substring(3,3) == "DEF" || myString.Substring(3,3) == "RED")?true:false,"Failed");

答案 1 :(得分:1)

根据您使用的单元测试框架,您可以执行以下操作:

Assert.Contains(myString.Substring(3, 3), new [] { "DEF", "RED" });

但要注意,这会滥用系统,因为它切换了预期实际

应该适用于任何框架并且不滥用系统的替代方法如下所示:

Assert.True(new [] { "DEF", "RED" }.Contains(myString.Substring(3, 3)));

答案 2 :(得分:1)

使用 NUnit,AnyOf constraint 可以工作:

Assert.That(myString.Substring(3,3), Is.AnyOf("DEF", "RED"));