【问题标题】:How to use C++ enums with UnitTest++ checks?如何在 UnitTest++ 检查中使用 C++ 枚举?
【发布时间】:2011-07-25 17:02:57
【问题描述】:

我有以下枚举:

namespace Country {
    enum {
        ITALY = 1,
        SPAIN = 2
    };
}

还有下面的UnitTest++测试:

TEST(something) {
    CHECK_EQUAL(Country::SPAIN, object.getCountry(1)); // getCountry returns int
}

这不起作用。我以为Country::SPAIN 会自动转换为int 2,但我得到了这个错误:

error: no matching function for call to ‘CheckEqual(UnitTest::TestResults&, Country::<anonymous enum>, int, UnitTest::TestDetails)’

【问题讨论】:

  • 自己将Country::SPAIN 转换为int 有问题吗?
  • 不,它确实有效。我没有考虑过(我是 C++ 新手)。谢谢。无论如何,有没有解释为什么我不能这样做,但我可以做到int c = Country::SPAIN
  • int c = Country::SPAIN 执行隐式转换。我没有用过UnitTest++,所以不知道CheckEqual的实际签名,但我怀疑它是一个模板。

标签: c++ enums unittest++


【解决方案1】:

将枚举转换为您自己的int

TEST(something) {
    CHECK_EQUAL(static_cast<int>(Country::SPAIN), object.getCountry(1));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多