使用OR条件断言

本文关键字:断言 条件 OR 使用 | 更新日期: 2023-09-27 18:20:10

我正在检查一个字符串中是否有三个字符的

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条件断言

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

使用NUnit,AnyOf约束有效:

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

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

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

但请注意,这有点滥用系统,因为它切换了预期的和实际的

另一种方法应该适用于任何框架,并且不会滥用系统,它看起来是这样的:

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

NUnit还可以选择通过OR:进行测试

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

使用xUnit

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