[英]Comparing Enum Value With Integer - Assert.AreEqual
我對枚舉進行了以下測試:
[TestCase]
public void NoneIsDefaultTest()
{
Assert.AreEqual(0, Command.None);
}
這樣做的目的是確保對枚舉的任何添加都不會更改默認值。 但是,測試失敗並顯示:
Expected: 0
But was: None
Assert.AreEqual是否自動應用.ToString()? 如何避免這種情況?
編輯 :枚舉定義:
internal enum Command { None = 0, Build, Config, Reconfig, Help, Version }
AreEqual
僅在格式化錯誤消息時才使用ToString
進行比較。 枚舉形成與基礎值類型不同的類型,因此比較0.Equals(Command.None)
返回false,因為枚舉值不是int。
強制轉換為int應該可以:
Assert.AreEqual(0, (int)Command.None);
強制轉換為int可以,但是如果您要測試的只是默認值(這就是我的問題所在),則可以使用default關鍵字:
[TestCase]
public void NoneIsDefaultTest()
{
Assert.AreEqual(default(Command), Command.None);
}
如果默認值本身就是您要測試的值,它也具有直觀的感覺。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.