5
我正在使用GoogleTest版本1.7.0來測試我的C++應用程序。我有定義爲以下一個枚舉谷歌測試錯誤打印的枚舉類
namespace MyNamespace {
enum class MyEnum {
MyEnumValue,
MyEnumValue2
}
}
GoogleTest不正確地打印它的值,從而導致該錯誤消息時,測試失敗:
的值:MyClass.MyMethodThatReturnsEnum()
實際值: 4個字節的對象
預期:MyEnum :: MyEnumValue
哪個是:4字節對象< 02-00 00-00>
刪除關鍵字class
會生成帶有enum實際值的正確錯誤消息。這是GoogleTest的一個已知行爲/錯誤嗎?有沒有辦法解決這個問題?
MyClass my_class;
EXPECT_EQ(MyEnum::MyEnumValue, my_class.MyMethodThatReturnsEnum());
謝謝你的回覆,我很感激。但是,我仍然不明白爲什麼GoogleTest將枚舉值打印爲字節。它不應該只是一個比較?你能再詳細一點嗎? – Stefano 2015-02-05 14:55:23
我對這個框架並不熟悉,但我猜想它會以這種方式打印所有對象。例如,一個64位的對象將被打印爲8個字節。如果我錯了,你可以糾正我。 – OlivierLi 2015-02-05 14:58:29
此外,它打印消息的方式應該對EXPECT_EQ()函數沒有影響。 – OlivierLi 2015-02-05 14:59:09