在使用 NUnit 为我们的 .Net (C#) 库编写一些测试时,我遇到了以下问题:我有一个具有 Flags 属性的枚举,例如
[Flags]
public enum Powers : int
{
Undefined = 0,
Zero = 1,
One = 2,
Two = 4,
}
Run Code Online (Sandbox Code Playgroud)
现在我想编写一个 NUnit 测试来检查
Powers aValue = Powers.One | Powers.Two
Run Code Online (Sandbox Code Playgroud)
包含 Powers.Two。目前,我使用
Assert.That((aValue & Powers.Two) == Powers.Two), "something went wrong")
Run Code Online (Sandbox Code Playgroud)
但是没有更优雅的方法来做到这一点吗?谢谢你的提示。
您可以使用Enum.HasFlag。
在你的情况下:
Assert.That(aValue.HasFlag(Powers.Two), "something went wrong");
Run Code Online (Sandbox Code Playgroud)
请注意,此方法仅在.NET Framework 4及更高版本中可用。