我对enum进行了以下测试:
[TestCase]
public void NoneIsDefaultTest()
{
Assert.AreEqual(0, Command.None);
}
这样做的目的是确保对枚举的任何添加都不会改变默认值。但是,使用以下命令测试失败:
Expected: 0
But was: None
断言。AreEqual自动应用。tostring ()?我怎样才能避免这种情况呢?
编辑:枚举定义:
internal enum Command { None = 0, Build, Config, Reconfig, Help, Version }
AreEqual
不使用ToString
进行比较,只有在格式化错误消息时才使用。枚举形成不同于底层值类型的类型,因此比较0.Equals(Command.None)
返回false,因为枚举值不是int。
转换为整型应该没问题:
Assert.AreEqual(0, (int)Command.None);
转换为int可以,但如果您只想测试默认值(这就是我的问题背后的原因),则可以使用默认关键字:
[TestCase]
public void NoneIsDefaultTest()
{
Assert.AreEqual(default(Command), Command.None);
}
它也有一种直观的感觉,如果默认值本身就是你要测试的。