比较枚举值与整数- Assert.AreEqual

本文关键字:Assert AreEqual 整数 枚举 比较 | 更新日期: 2023-09-27 17:50:24

我对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 }

比较枚举值与整数- Assert.AreEqual

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);
}

它也有一种直观的感觉,如果默认值本身就是你要测试的。