NUnit Assertion枚举值包含一个标志

时间:2013-05-07 13:36:26

标签: .net nunit flags

在使用NUnit为我们的.Net(C#)库编写一些测试时,我遇到了以下问题: 我有一个具有Flags属性的枚举,例如

[Flags]
public enum Powers : int
{
    Undefined = 0,
    Zero = 1,
    One = 2,
    Two = 4,
}

现在我想编写一个NUnit测试来检查

Powers aValue = Powers.One | Powers.Two 

包含Powers.Two。目前,我使用

Assert.That((aValue & Powers.Two) == Powers.Two), "something went wrong")

但这不是更优雅的方式吗? 谢谢你的提示。

1 个答案:

答案 0 :(得分:3)

您可以使用Enum.HasFlag

在你的情况下:

Assert.That(aValue.HasFlag(Powers.Two), "something went wrong");

请注意,此方法仅适用于 .NET Framework 4 及更高版本。