簡體   English   中英

將枚舉值與整數進行比較-Assert.AreEqual

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM